




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、创建型模式一工厂方法模式Factory Method Pattern四种角色:抽象产品(Product) 具体产品(ConcreteProduct) 构造者(Creator) 具体构造者(ConcreteCreator) 二抽象工厂模式Abstract Factory Pattern四种角色:抽象产品(Prodcut) 具体产品(ConcreteProduct) 抽象工厂(AbstractFactory) 具体工厂(ConcreteFactory) 使用情景:用户需要一个子类的实例,但不希望与该类的子类形成耦合。用户需要一个子类的实例,但用户不知道该类有哪些子类可用。三生成器模式Builder
2、 Pattern 四原型模式Prototype Pattern 两种角色:抽象原型(Prototype) 具体原型(Concrete Prototype) 应用情景:1.程序需要从一个对象出发,得到若干个和其状态相同,并可独立变化其状态的对象时。 2当对象的创建需要独立于它的构造过程和表示时。 3.一个类创建实例状态不是很多,那么就可以将这个类的一个实例定义为原型,那么通过复制该原型得到新的实例可能比重新使用类的构造方法创建新实例更方便。五单件模式Prototype Pattern一个角色:单件类(Singleton)行为型模式一责任链模式Chain of Responsibility Pat
3、tern 两种角色:处理者(Handler) 具体处理者(ConcreteHandler) 应用情景:1.有许多对象可以处理用户的请求,希望程序在运行期间自动确定处理用户的那个对象。2.希望用户不必明确指定接受者的情况下,向多个接受者的一个提交请求。3.程序希望动态制定可处理用户请求的对象集合。二命令模式Command Pattern四种角色:接收者(Receiver) 命令(Command)接口 具体命令(ConcreteCommand) 请求者(Invoker)应用情景:1.程序需要在不同的时刻指定、排列和执行请求 2.程序需要提供撤销操作 3.程序需要支持宏操作 三迭代器模式Iterat
4、or Pattern四种角色:集合(Aggregate) 具体集合(ConcreteAggregate) 迭代器(Iterator) 具体迭代器(ConcreteIterator)应用情景:1.让用户访问一个集合中的对象,但又不想暴露对象在集合中的存储结构。 2.希望对遍历不同的集合提供一个统一的接口。 四中介者模式Mediator Pattern四种角色:中介者(Mediator) 具体中介者(ConcreteMediator) 同事(Colleague) 具体同事(ConcreteColleague)应用情景:1.许多对象以复杂的方式交互,所导致的依赖关系使系统难以理解和维护。 2.一个对
5、象引用其它很多对象,导致难以利用该对象。五观察者模式Observer Pattern四种角色:主题(Subject) 观察者(Observer) 具体主题(ConcreteSubject) 具体观察者(ConcreteObserver) 应用情景:1.当一个对象的数据更新时需要通知其他对象,但这个对象又不希望和被通知的那些对象形成紧耦合。 2.当一个对象的数据更新时,这个对象需要让其他对象也各自更新自己的数据,但这个对象不知道具体有多少对象需要更新数据。六策略模式Strategy Pattern三种角色:策略(Strategy)具体策略(ConcreteStrategy) 上下文(Contex
6、t) 应用情景:1.一个类定义了多种行为,并且这些行为在这个类的方法中以多个条件语句的形式出现,那么可以使用策略模式避免在类中使用大量的条件语句。 2.程序不希望暴露复杂的,与算法相关的数据结构,那么可以使用策略模式封装算法。 3.需要使用一个算法的不同变体。七状态模式State Pattern三种角色:环境(Context) 抽象状态(State) 具体状态(Concrete State)使用情景:1.一个对象的行为依赖于它的状态,并且它必须在运行时根据状态改变它的行为。 2.需要编写大量的条件分支语句来决定一个操作的行为,而且这些条件恰好表示对象的一种状态。八模板方法模式Template
7、Method Pattern两种角色:抽象模板(Abstract Template) 具体模板(Concrete Template) 优点:1.可以通过在抽象模板定义模板方法给出成熟的算法步骤,同时又不限制步骤的细节,具体模板实现算法细节不会改变整个算法的骨架。2.在抽象模板模式中,可以通过钩子方法对某些步骤进行挂钩,具体模板通过钩子可以选择算法骨架中的某些步骤。使用情景:1.设计者需要给出一个算法的固定步骤,并将某些步骤的具体实现留给子类来实现。2.需要对代码进行重构,将各个子类公共行为提取出来集中到一个共同的父类中以避免代码重复。九访问者模式Visitor Pattern 使用情景:1.一
8、个对象结构中,比如某个集合中,包含很多对象,想对集合中的对象增加一些新的操作。2.需要对集合中的对象进行很多不同的并且不相关的操作,而又不想修改对象的类。十备忘录模式Memento Pattern三种角色:原发者(Originator) 备忘录(Memento) 负责人(Caretaker) 使用情景:1.必须保存一个对象在某一时刻的全部或部分状态,以便在需要时恢复该对象先前的状态。 2.一个对象不想通过提供public权限的,诸如getXXX()方法让其他对象得到自己的内部状态。十一解释器模式Interpreter Pattern 四种角色:抽象表达式(AbstractExpression)
9、 终结符表达式子(TerminalExpression) 非终结符表达式子(NonterminalExpression) 上下文(Context) 使用情景:当有一个简单的语言需要解释执行,并且可以将该语言的每一个规则表示为一个类时。结构型行为模式一装饰模式Decorator Pattern四种角色:抽象组件(Component) 具体组件(ConcreteComponent) 装饰(Decorator) 具体装饰(ConcreteDecotator) 优点:1.被装饰者和装饰者是松耦合关系。由于装饰(Decorator)仅仅依赖于抽象组件(Component),因此具体装饰只知道它要装饰的对
10、象是抽象组件的某一个子类的实例,但不需要知道是哪一个具体子类。2.装饰模式满足“开-闭原则”。不必修改具体组件,就可以增加新的针对该具体组件的具体装饰。3.可以使用多个具体装饰来装饰具体组件的实例。使用情景:程序希望动态地增强类的鞭个对象的功能,而不又影响到该类的其它对象。 4.采用继承来增强对象功能不利于系统的扩展和维护。二适配器模式Adapter Pattern三种角色:目标(Target) 被适配者(Adaptee) 适配器(Adapter) 使用情景:一个程序想使用已经存在的类,但该类所实现的接口和当前程序所使用的接口不一致。三外观模式Chain of Responsibility P
11、attern两种角色:子系统(Subsystem) 外观(Facade) 使用情景:1.对于一个复杂的子系统,需要为用户提供一个简单的交互操作。 2.不希望客户代码和子系统中的类有耦合,以便提高子系统的独立性和可移植性。 3.当整个系统需要构建一个层次结构的子系统,不希望这些子系统相互直接交互。四组合模式Composite Pattern 三种角色:抽象组件(Component) Composite节点(Composite Node) Leaf节点(Leaf Node)优点:1.组合模式中包含有个体对象和组合对象,并形成树形结构,使用户可以方便地处理个体对象和组合对象。2.组合对象和个体对象实
12、现了相同的接口,用户一般不需区分个体对象和组合对象。3.当增加新的Composite节点和Leaf节点时,用户的重要代码不需要作出修改。 使用情景:1.当想表示对象的部分整体层次结构。 2.希望用户用一致的方式处理个体对象和组合对象。五桥接模式Bridge Pattern四种角色:抽象(Abstraction) 实现者(Implementor) 细化抽象(Refined Abstraction) 具体实现者(Concrete Implementor) 使用情景:1不想主抽象和某些重要的实现代码是固定的绑定关系,这部分实现可运行时动态决定。 2.抽象和实现都可以继承的方式独立地扩充而不相互影响,
13、程序在运行期间可能需要动态地将一个抽象的子类的实例与一个实现者的子类的实例进行组合。 3.希望对实现者层次代码的修改对抽象层不产生影响,即抽象层的代码不必重新编译,反之亦然。六代理模式Proxy Pattern 优点:代理模式可以屏蔽用户真正请求的对象,使用户程序和真正的对象之间解耦。使用代理来担当那些创建耗时的对象的替身使用情景:1.程序可能不希望用户直接访问该对象,而是提供一个特殊的对象以控制对当前对象的访问。 2.如果一个对象需要很长时间才能加载完成。 3.如果对象位于远程主机上,需要为用户提供访问该远程对象的能力。七享元模式Flyweight Pattern 三种角色:享元接口(Fly
14、weight) 具体享元(Concrete Flyweight) 享元工厂(Flyweight Factory)优点:1.使用享元可以节省内存的开销,特别适合处理大量细粒度对象,这些对象的许多属性值是相同的,而且一旦创建则不容许修改。2.享元模式中的享元可以使用方法的参数接受外部状态中的数据,但外部状态数据不会干扰到享元中的内部数据,这就使得享元可以在不同的环境中被共享。面向对象基本原则1. 面向抽象原则,面向抽象是指当设计一个类时,不让该类面向具体的类,而是面向抽象类或接口,即所设计类中的重要数据是抽象类或接口声明的变量,而不是具体类声明的变量。 2. 开闭原则 ,对扩展开放,对修改关闭。3高内聚
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 当天入出院管理制度
- 律师进村居管理制度
- 微权力工作管理制度
- 心连心请假管理制度
- 快递站仓库管理制度
- 急诊实训室管理制度
- 总承包安全管理制度
- 患者出入院管理制度
- 成品物料卡管理制度
- 成都cng管理制度
- 2023届唐山市路南区五年级数学第二学期期末检测模拟试题含解析
- 外立面泛光照明施工方案
- 冀教2011版八年级英语下册《Lesson7PlantingTrees》教案及教学反思
- 2023年5月20日河南省事业单位联考《职业能力测试》试题及答案
- 合同起草审查指南:三观四步法
- 电力能源拖动及电路分析
- 提升中职师生数字素养的研究与实践
- 社区矫正业务培训会课件
- 军事博物馆参观感想专题培训课件
- 徐凯文的心理创伤课:冲破内心的至暗时刻
- 西方看兵团:兵团国际形象的塑造
评论
0/150
提交评论