UML笔记(七)

设计模式与UML

如何成为象棋高手?

第一步:学习基础象棋知识

       棋盘布局,棋子名称等等。

第二步:学习简单规则

       攻击力度、走棋规则等。

然而,学习象棋还需要研究已有的棋局

       这些棋局包含一些模式,需要理解、记忆并运用这些模式。

有成百种这样的经典棋局供学习

如何成为一个软件开发工程师?

第一步:学习规则

       学习算法、数据结构、程序设计语言等等。

第二步:学习原理

       学习结构化编程、模块化编程、面向对象编程等。

然而,为了成为一个软件设计高手,你还需要学习一些经典的软件设计模式,理解、记忆并在实际项目中反复运用它们。

有大量的软件设计模式供学习。

什么是模式?

每个模式描述了一个问题,该问题反复在我们的周围出现,每个模式给出了对该问题的核心解决方法,因此,人们可以反复使用给解决方法解决类似问题。

为什么学习模式?

模式帮助你学习他们成功的经验,从而避免失误。

模式和框架的比较

·模式(Patterns)支持软件结构和实际的重用

       1、抓住了特定领域中为题的成功解决方案中的静态、动态结构和相互之间的协作关系

       2Patterns与开发语言无关,但是建立在一定的环境基础上

       3、例如:经典的MVCFactory Method

·框架(Frameworks)支持细节设计和代码的重用

       Framework是一组组件的综合,这些组件相互协作,为一族相互应用提供了一个可重用的框架结构

·两者结合起来,设计模式和框架有助于提高软件的质量

比如:重用性,扩展性,性能,可维护性

·框架的Hollywood Principle

       Don’t call uswe’ll call you。)

·模式和框架的比较:

       设计模式比框架更抽象

       和框架相比,设计模式是更小单元的架构元素

       从使用的广度来说,设计模式比框架更广,它与应用的相关性更小。

关于“Design Pattern

·对已有模式的整理、分类

·一套描述模式的词汇,可用于交流和文档化

·为软件设计总结了宝贵的经验,这些设计经验可以被重用,但不是简单的代码重用。

·分类:

       Creational Patterns

       Structural Patterns

       Behavioral Patterns

·在软件设计模式领域,起到先驱的作用

重提:指导模式设计的三个概念

·重用(reuse ):是目标

       两种重要的重用手段

              Inheritance&composition

·接口与实现分离

       接口保持不变,分离带来灵活性

       多态性(polymorphism

·Decouple

       降低复杂性

如何描述一个模式

·关键要素

       模式名称

       问题、动机

       约束

       上下文

       解决方案(结构Structure、参与者Participants、协作Collaboration、实现Implementation

       评测

       相关模式

25

创建型模式(Creational Patters

·Factory Method

       本质:用一个virtual Method 完成创建过程。

·Abstract Factory

       一个product族的Factory Method构成了一个Factory接口

·Prototype

       通过Product原型来构造ProductClone+prototype manager

·Builder

       通过一个构造算法和builder接口把构造过程与客户端离开

·Singleton

       单实例类型,如何构造这单个实例?如何访问这单个实例?

·Finder

       把对象的获取过程与客户隔离开

·Singleton模式为提供对象的单一入口提供了帮助。

·AbstractFactoryFactoryMethod模式在功能上比较类似,都是用来处理对象的创建的,但应用在不同的层面上。

·Builder模式用来处理对象创建的细节,在两个工厂模式中都没有涉及到对象创建的具体细节,都是通过接口来返回一个给定类型的对象。而Builder模式则需要对创建一个给定类型对象的过程进行建模。这对创建复杂对象时很有用,使得创建的算法独立于对象各个组成部分的创建。

·Prototype模式使用原型机制,通过创建简单原型的拷贝来创建对象。

·AdapterBridgefaçade

       Adapter用于两个不兼容接口之间的转接

       Bridge用于讲一个抽象与多个可能的实现连接起来

       Façade用于为复杂的子系统定义一个新的简单易用的接口

·compositedecoratorproxy

       Composite用于构造对象组合结构

       Decorator用于为对象增加新的职责

       Proxy为目标对象提供一个替代者

·flyweight

       针对细粒度对象的一种全局控制手段

行为型模式(Behavioral Patterns

·Command

       用对象封装命令,使得命令可以被传递、记录、排队等。

·Iterator

       把对聚合体对象的访问封装起来

·Observer

       建立起一对多的通信模型,特别适合于更新通知和事件模型

·Strategy

       把一个对象或者类的某些行为封装到另一个单独的对象中

·Visitor

       把对一个结构模型型的操作单独组织到一个类中

·Chain of Responsibility

       请求的处理过程,沿着链传递,decouple发送方和接收方

·Interpreter

       在类层次结构中,在特定环境的interpret过程

·Mediator

       用一个mediatordecouple个同等单元

·Memento

       在对象之外保存对象的内部状态

·State

       把一个对象的状态独立出来,动态可变换状态对象的类型

·Template Method

       在基类中定义算法的骨架,把某些细节延迟到子类中

·StrategyIteratorMediatorStatecommand

       用一个对象来封装某些特性,比如变化、交互、状态、行为、命令

·Mediator Observer

       Observer建立起subjectObserver之间的松耦合连接

       Mediator把约束限制集中起来——中心控制

·commandChain of responsibilityinterpreter

       Command模式侧重于命令的总体管理

       Chain of Responsibility侧重于命令被正确处理

       Interpreter用于复合结构中操作的执行过程

举例

命令模式 The Command Pattern

Client:创建一个Concrete command对象,调用者并确定其接受者。

Command:生命一个给所有具体命令类的接口。

Comcerecommand:定义一个接受者和行为之间的弱耦合,实现execute() 方法,该方法调用接受者相应的操作。

Invoker:伏在调用命令对象执行请求。

Recelver:具体实施一个请求。

适配器模式 The Adapter Pattern

·现实世界中充满适配器!

·面向对象适配器

 

 

原文地址:https://www.cnblogs.com/CharmingDang/p/9664028.html