23种设计模式PPT合集[知识发现]
- 格式:ppt
- 大小:3.75 MB
- 文档页数:220
详解23种设计模式设计模式(Design Patterns) ⾸先说⼀下我对设计模式的理解,设计模式是⼀种在软件内部优化代码的技巧。
注意,是代码的内部,也就是在⼀个局部范围内优化设计。
这⼀点和软件的架构是完全不同的,软件架构是全局的优化,讲的是怎么对软件进⾏切分以及对切开之后的内容进⾏重组的⼀个过程。
软件的设计模式强调的是代码,软件架构强调的是结构。
在⾯向对象的编程思想中,这就体现在怎么解决类与类之间的关系。
能处理好类与类之间的关系,优化设计就搞好了。
下⾯这段话是软件设计模式的定义: 设计模式(Design pattern)是⼀套被反复使⽤、多数⼈知晓的、经过分类编⽬的、代码设计经验的总结。
使⽤设计模式是为了可重⽤代码、让代码更容易被他⼈理解、保证代码可靠性。
毫⽆疑问,设计模式于⼰于他⼈于系统都是多赢的,设计模式使代码编制真正⼯程化,设计模式是软件⼯程的基⽯,如同⼤厦的⼀块块砖⽯⼀样。
项⽬中合理的运⽤设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每⼀个模式描述了⼀个在我们周围不断重复发⽣的问题,以及该问题的核⼼解决⽅案,这也是它能被⼴泛应⽤的原因。
设计模式是⼀代⼜⼀代的编程⼤师总结出来的,我们应该重视,不能束之⾼阁,应当合理利⽤。
关键是要搞清楚哪种情况⽤哪种设计模式。
⼀、设计模式的分类总体来说设计模式分为三⼤类:创建型模式,共五种:⼯⼚⽅法模式、抽象⼯⼚模式、单例模式、建造者模式、原型模式。
(还有⼀种叫简单⼯⼚模式,是⼯⼚模式的变形,不满⾜单⼀职责,设计不太合理,所以就没列出来)结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
⾏为型模式,共⼗⼀种:策略模式、模板⽅法模式、观察者模式、迭代⼦模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
⼆、设计模式的七⼤原则设计模式的七⼤原则堪称经典,这七条原则是我们在设计软件的过程中必须准守的,当然不遵守的话,你的⽼板可能就会“嘿嘿”你,你懂得!这七条原则指导了23种设计模式,可以这么说,23种设计模式就是在这七条原则在不同场景之下的应⽤。
1、工厂模式:Factory客户类和工厂类分开。
消费者任何时候需要某种产品,只需向工厂请求即可。
消费者无须修改就可以接纳新产品。
缺点是当产品修改时,工厂类也要做相应的修改。
如:如何创建及如何向客户端提供。
2、建造模式:Builder将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。
建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。
建造模式可以强制实行一种分步骤进行的建造过程。
3、工厂方法模式:FactoryMethod核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。
4、原始模型模式:Prototype通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。
原始模型模式允许动态的增加或减少产品类,产品类不需要非得有任何事先确定的等级结构,原始模型模式适用于任何的等级结构。
缺点是每一个类都必须配备一个克隆方法。
5、单例模式:Singleton单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例单例模式。
单例模式只应在有真正的“单一实例”的需求时才可使用。
6、适配器(变压器)模式:Adapter把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。
适配类可以根据参数返还一个合适的实例给客户端.7、桥梁模式:Bridge将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以独立的变化。
8、合成模式:Composite合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。
合成模式就是一个处理对象的树结构的模式。
23种设计模式及应用设计模式是指在软件设计过程中,针对常见问题的解决方案的经验总结。
它们提供了解决特定或常见问题的可重用方案,使得软件设计更加灵活、可扩展和可维护。
1. 创建型模式:- 单例模式:确保一个类只有一个实例,并提供全局访问点。
- 简单工厂模式:通过一个共同的接口创建不同的对象实例。
- 工厂方法模式:定义一个创建对象的接口,由子类决定具体创建哪个对象。
- 抽象工厂模式:提供一个创建一系列相关或互相依赖对象的接口。
- 建造者模式:将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。
2. 结构型模式:- 适配器模式:将一个类的接口转换为客户端所期待的另一种接口。
- 桥接模式:将抽象部分与它的实现部分分离,使它们可以独立变化。
- 组合模式:将对象组合成树形结构以表示"整体-部分"的层次结构。
- 装饰器模式:动态地给对象添加额外的功能,避免继承带来的类膨胀问题。
- 外观模式:为子系统中一组接口提供一个一致的界面。
3. 行为型模式:- 策略模式:定义一系列算法,将它们封装起来,并使它们可以相互替换。
- 观察者模式:定义对象之间的依赖关系,当对象状态改变时自动通知依赖方。
- 模板方法模式:定义一个操作中的算法骨架,将一些步骤延迟到子类中实现。
- 命令模式:将一个请求封装成一个对象,从而使您可以用不同的请求参数化客户端对象。
- 状态模式:允许对象在其内部状态改变时改变其行为。
4. J2EE模式:- MVC模式:将应用程序划分为三个核心组件:模型、视图和控制器。
- 业务代表模式:将对业务对象的访问和业务逻辑从表示层分离出来。
- 数据访问对象模式:用于将业务逻辑和数据访问逻辑分离。
- 前端控制器模式:通过一个单一的入口点来处理应用程序的所有请求。
- 传输对象模式:用于在客户端和服务器之间传输数据。
5. 并发模式:- 线程池模式:创建一组预先初始化的线程对象来处理任务。
23种设计模式及其应⽤场景设计模式主要分三个类型:创建型、结构型和⾏为型。
其中创建型有:⼀、Singleton,单例模式:保证⼀个类只有⼀个实例,并提供⼀个访问它的全局访问点;应⽤场景:⼀个⽆状态的类使⽤单例模式节省内存资源。
⼆、Abstract Factory,抽象⼯⼚:提供⼀个创建⼀系列相关或相互依赖对象的接⼝,⽽⽆须指定它们的具体类。
应⽤场景:⼀系列相互依赖的对象有不同的具体实现。
提供⼀种“封装机制”来避免客户程序和这种“多系列具体对象创建⼯作”的紧耦合。
三、Factory Method,⼯⼚⽅法:定义⼀个⽤于创建对象的接⼝,让⼦类决定实例化哪⼀个类,Factory Method使⼀个类的实例化延迟到了⼦类。
应⽤场景:由于需求的变化,⼀个类的⼦类经常⾯临着剧烈的变化,但他却拥有⽐较稳定的接⼝。
使⽤⼀种封装机制来“隔离这种易变对象的变化”,⼯⼚⽅法定义⼀个⽤于创建对象的接⼝,让⼦类来确定创建哪⼀个具体类的对象,将对象的实例化延迟。
四、Builder,建造模式:将⼀个复杂对象的构建与他的表⽰相分离,使得同样的构建过程可以创建不同的表⽰。
应⽤场景:⼀个类的各个组成部分的具体实现类或者算法经常⾯临着变化,但是将他们组合在⼀起的算法却相对稳定。
提供⼀种封装机制将稳定的组合算法于易变的各个组成部分隔离开来。
五、Prototype,原型模式:⽤原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象。
应⽤场景:⽤new创建⼀个对象需要⾮常繁琐的数据准备或者权限⾏为型有:六、Iterator,迭代器模式:提供⼀个⽅法顺序访问⼀个聚合对象的各个元素,⽽⼜不需要暴露该对象的内部表⽰。
应⽤场景:迭代。
七、Observer,观察者模式:定义对象间⼀对多的依赖关系,当⼀个对象的状态发⽣改变时,所有依赖于它的对象都得到通知⾃动更新。
应⽤场景:某个实例的变化将影响其他多个对象。
⼋、Template Method,模板⽅法:定义⼀个操作中的算法的⾻架,⽽将⼀些步骤延迟到⼦类中,TemplateMethod使得⼦类可以不改变⼀个算法的结构即可以重定义该算法的某些特定步骤。
23种设计模式详解设计模式是指面向对象编程中,经过多次验证、被广泛接受的代码实现方法。
这些设计模式可以帮助开发者更快地解决问题,提高代码的可读性、可维护性、可扩展性。
目前,常用的设计模式有23种。
下面,我们来详细介绍一下这23种设计模式。
1. 单例模式(Singleton)单例模式是一种只允许生成一个实例的模式。
在实例化对象时,单例模式的生成过程比较特殊,需要先判断该类是否已经实例化过,如果已经实例化,则直接返回已有的实例对象,否则再进行实例化。
2. 工厂模式(Factory)工厂模式是一种生产对象实例的设计模式。
它将对象实例的生成过程封装在一个工厂类中,客户端需要对象时,只需要调用工厂类中对应的方法即可。
3. 抽象工厂模式(Abstract Factory)抽象工厂模式是一种扩展了工厂模式的模式。
它可以生成一系列相关或相互依赖的对象实例。
具体实现时,通常需要定义一个抽象工厂类和一些具体工厂类,来生产各种相关的对象实例。
4. 建造者模式(Builder)建造者模式是一种用于构建复杂对象的模式。
它将一个复杂对象的构建过程分解成多个简单的步骤,然后通过一个指挥者来管理这些步骤的执行,最终构建出一个复杂的对象。
5. 原型模式(Prototype)原型模式是一种通过复制已有对象来创建新对象的模式。
一般来说,系统中的对象包含大量相同或相似的部分,通过复制对象可以帮助我们节省生成对象的时间和资源。
6. 适配器模式(Adapter)适配器模式是一种将不兼容接口转换为兼容接口的模式。
具体实现时,需要定义一个适配器类,该类实现了客户端所期望的接口,而且还包装了原有不兼容的接口,使其能够兼容客户端期望的接口。
7. 桥接模式(Bridge)桥接模式是一种将抽象部分与其实现部分分离开来的模式。
具体实现时,需要定义抽象部分和实现部分的接口,然后定义一个桥接类,将抽象部分和实现部分联系起来。
8. 组合模式(Composite)组合模式是一种将具有相同属性和方法的对象组合成树形结构的模式。
23种设计模式汇集如果你还不了解设计模式是什么的话?那就先看设计模式引言!学习GoF设计模式的重要性建筑和软件中模式之异同A. 创建模式设计模式之Singleton(单态/单件) 阎宏博士讲解:单例(Singleton)模式保证一个类只有一个实例,并提供一个访问它的全局访问点设计模式之Factory(工厂方法和抽象工厂)使用工厂模式就象使用new一样频繁.设计模式之Builder汽车由车轮方向盘发动机很多部件组成,同时,将这些部件组装成汽车也是一件复杂的工作,Builder模式就是将这两种情况分开进行。
设计模式之Proto type(原型)用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
B. 结构模式设计模式之Adapter(适配器)使用类再生的两个方式:组合(new)和继承(extends),这个已经在thinking in java中提到过.设计模式之Proxy(代理)以Jive为例,剖析代理模式在用户级别授权机制上的应用设计模式之Facade(门面?)可扩展的使用JDBC针对不同的数据库编程,Facade提供了一种灵活的实现.设计模式之Composite(组合)就是将类用树形结构组合成一个单位.你向别人介绍你是某单位,你是单位中的一个元素,别人和你做买卖,相当于和单位做买卖。
文章中还对Jive再进行了剖析。
设计模式之Decorator(装饰器)Decorator是个油漆工,给你的东东的外表刷上美丽的颜色.设计模式之Bridge(桥连)将牛郎织女分开(本应在一起,分开他们,形成两个接口),在他们之间搭建一个桥(动态的结合)设计模式之Flyweight(共享元)提供Java运行性能,降低小而大量重复的类的开销.C. 行为模式设计模式之Command(命令)什么是将行为封装,Command是最好的说明.设计模式之Observer(观察者)介绍如何使用Java API提供的现成Observer设计模式之Iterator(迭代器)这个模式已经被整合入Java的Collection.在大多数场合下无需自己制造一个Iterator,只要将对象装入Collection中,直接使用Iterator进行对象遍历。
23种常⽤的设计模式23种设计模式总体可以分为三类:⼀、创建型模式 ⼯⼚模式、抽象⼯⼚、单例模式、建造者模式、原型模式⼆、结构型模式 装饰器模式、适配器模式、代理模式、外观模式、桥接模式、组合模式、享元模式三、⾏为型模式 策略模式、观察者模式、模板⽅法模式、责任链模式、迭代⼦模式、备忘录模式、命令模式、访问者模式、中介者模式、状态模式、解释器模式下⾯主要介绍以上9种红⾊字体的设计模式。
(1)⼯⼚模式:定义⼀个创建对象的接⼝,让⼦类决定具体实例化哪⼀个对象。
public interface Sender{void sender();}public class SenderFactory{ //创建简单⼯⼚public Sender produce(String type){if(type.equals("mail")){return new MailSender();}else if(type.equals("msg")){return new MsgSender();}else{return null;}}}(2)抽象⼯⼚:为⼀组相关或相互依赖的对象提供⼀个接⼝,且⽆需指定他们的具体实现类。
//定义实现功能的接⼝public interface Sender{void sender();}//定义⽣产⼯⼚的接⼝,提供⼀个返回上⾯接⼝功能的⽅法,⽐如Senderpublic interface Provider{Sender produce();}//扩展发送邮件的实现类public class MailSenderFactory implements Provider{@OverrideSender produce(){return new MailSender();}}(3)单例模式:确保⼀个类只存在⼀个实例(介绍两种线程安全的单例模式)1.使⽤volatile关键字实现线程安全的单例模式public class SingletonInstance03 {private static volatile SingletonInstance03 singletonInstance03= null; //将这个变量定义为线程可见的private SingletonInstance03(){}public static SingletonInstance03 getInstance(){if(singletonInstance03 == null){//对这个实例加锁synchronized (singletonInstance03){if(singletonInstance03 == null){singletonInstance03 = new SingletonInstance03();}}}return singletonInstance03;}}2.使⽤内部类持有单例实例来实现线程安全的单例模式。
23种设计模式的经典运用介绍设计模式是解决软件设计中常见问题的可重复使用的解决方案。
本文将介绍23种经典的设计模式,并给出它们在实际开发中的应用示例。
通过学习这些设计模式,您将增加对软件设计的理解,并能够更好地解决问题。
创建型设计模式1.工厂方法模式(F a c t o r y M e t h o d)工厂方法模式通过定义一个创建对象的接口,但由子类决定实例化具体类。
这种方法可以延迟实例化过程,具有更高的灵活性和可扩展性。
应用场景:-在一个系统中,希望客户端与具体类的实例化解耦。
-希望通过增加具体类的扩展来增加系统的灵活性。
2.抽象工厂模式(A b s t r a c t F a c t o r y)抽象工厂模式提供一个接口,用于创建相关或依赖对象组。
这种模式将对象的实例化推迟到子类中,从而实现了解耦。
应用场景:-当一个系统独立于其产品的创建、组合和表示时。
-当需要一个系列的相互依赖的对象而无需指定其具体类时。
3.单例模式(S i n gl e t o n)单例模式确保一个类只有一个实例,并提供一个全局访问点。
这种模式常用于控制对资源的访问,例如数据库连接或日志文件。
应用场景:-当需要一个类的唯一实例,并且该实例需要被多个客户端共享时。
-当需要限制系统中特定类的实例数量时。
4.原型模式(P r o to t y p e)原型模式通过复制现有对象来创建新对象。
这种模式对于创建需要消耗大量资源的对象非常有用,可以通过克隆现有对象来提高性能。
应用场景:-当一个系统的某些对象的创建比较昂贵时。
-当需要避免构造函数调用,而直接通过复制现有对象来创建新对象时。
5.建造者模式(B ui l d e r)建造者模式将一个复杂对象的构建过程与其表现分离,使得相同的构建过程可以创建不同的表现。
应用场景:-当想要构建一些复杂对象时,如生成器。
-当需要创建对象的过程具有多个步骤,并且每个步骤都可以按需选择或省略时。
结构型设计模式6.适配器模式(A da p t e r)适配器模式将一个类的接口转换为客户端所期望的另一个接口。
23种设计模式设计模式主要分为三⼤类:创建型、结构型、⾏为型创建型创建型模式简单来说就是⽤来创建对象的。
⼀共有五种:单例模式、建造者模式、⼯⼚⽅法模式、抽象⼯⼚模式、原型模式。
单例模式:确保某⼀个类只有⼀个实例,并且提供⼀个全局访问点。
建造者模式:⽤来创建复杂的复合对象。
⼯⼚⽅法模式:让⼦类来决定要创建哪个对象。
抽象⼯⼚模式:创建多个产品族中的产品对象。
原型模式:通过复制原型来创建新对象。
结构型结构型模式主要是⽤于处理类或者对象的组合。
⼀共有七种:适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式代理模式:控制客户端对对象的访问。
组合模式:将整体与局部(树形结构)进⾏递归组合,让客户端能够以⼀种的⽅式对其进⾏处理。
适配器模式:将原来不兼容的两个类融合在⼀起。
装饰者模式:为对象添加新功能。
享元模式:使⽤对象池来减少重复对象的创建。
外观模式:对外提供⼀个统⼀的接⼝⽤来访问⼦系统。
桥接模式:将两个能够独⽴变化的部分分离开来。
⾏为型⾏为型模式主要是描述类或者对象是怎样交互和怎样分配职责的。
⼀共有⼗⼀种:策略模式、模板⽅法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式策略模式:封装不同的算法,算法之间能互相替换。
状态模式:根据不同的状态做出不同的⾏为。
责任连模式:将事件沿着链去处理。
观察者模式:状态发⽣改变时通知观察者,⼀对多的关系。
模板⽅法模式:定义⼀套流程模板,根据需要实现模板中的操作。
迭代器模式:提供⼀种⽅法顺序访问⼀个聚合对象中的各个元素。
迭代器模式:保存对象的状态,在需要时进⾏恢复。
访问者模式:稳定数据结构中,定义新的操作⾏为。
中介者模式:将⽹状结构转变为星型结构,所有⾏为都通过中介。
解释器模式:定义语法,并对其进⾏解释。
命令模式:将请求封装成命令,并记录下来,能够撤销与重做。
设计模式23个模式和意图:(1)抽象工厂(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
(2)适配器(Adapter):将一个类的接口转换成客户希望的另外一个接口。
Adapter模式使得原本由于接口不兼容而不能一起工作的哪些类可以一起工作。
(3)桥接(Bridge):将抽象部分与它的实现部分分离,是他们都可以独立的变化。
(4)生成器(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
(5)职责连(Chain of responsibility):为解除请求的发送者和接收者之间的耦合,而使多个对象都有机会处理这个请求。
将这些对象连成一条连,并沿着这条连传递该请求,直到有一个对象处理它。
(6)命令(Command):将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。
(7)组成(Composite):将对象组合成树形结构以表示“部分—整体”的层次结构。
Composite使得客户对单个对象和复合对象的使用具有一致性。
(8)装饰(Decorator):动态的给一个对象添加一些额外的职责。
就扩展功能而言,Decorator模式比生成子类模式更为灵活。
(9)外观(Facade):为子系统中的一类接口提供一个一致的界面,Fa?ade模式定义了一个高层接口,这个接口使得这一子系统更为灵活。
(10)工厂方法(Factory method):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。
Factory method使得一个类的实例化延迟到其子类。
(11)享元(Flyweight):运用共享技术有效的支持大量细粒度的对象。
(12)解释器(Interperter):给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。
设计模式-23种设计模式整体介绍及应⽤场景、七⼤设计原则总结对象的⼀、创建型模式:都是⽤来帮助我们创建对象的!(关注(关注对象的创建过程))创建过程模式1.单例单例模式保证⼀个类只有⼀个实例,并且提供⼀个访问该实例的全局访问点。
模式("Gof book"中把⼯⼚⽅法与抽象⼯⼚分为两种模式,所以创建型模式共为⼯⼚模式2.⼯⼚五种,这⾥只是为了⽅便整理,合在了⼯⼚模式中)-简单⼯⼚模式⽤来⽣产同⼀等级结构的任意产品。
(对于增加新的产品,需要修改已有代码)-⼯⼚⽅法模式⽤来⽣成同⼀等级结构中的固定产品。
(⽀持增加任意产品)-抽象⼯⼚模式⽤来⽣产不同产品族的全部产品。
(对于增加新的产品,⽆能为⼒,⽀持增加产品族)模式3.建造者建造者模式分离了对象⼦组件的单独构造(由Builder来负责)和装配(由Director负责),从⽽可以构造出复杂的对象。
模式原型模式4.原型通过new产⽣⼀个对象需要⾮常繁琐的数据准备或访问权限,则可以使⽤原型模式。
耦合,从⽽可以松耦合,从⽽可以扩⼤扩⼤结构上实现上实现松⼆、结构型模式:是从程序的、结构型模式:是从程序的结构对象和和类的组织)类的组织)(关注对象解决更⼤的问题。
(关注整体的类结构,⽤来整体的类结构,⽤来解决更⼤的问题。
模式1.适配器适配器模式⼯作中的场景:经常⽤来做旧系统改造和升级;如果我们的系统开发之后再也不需要维护,那么很多模式都是没必要的,但是不幸的是,事实却是维护⼀个系统的代价往往是开发⼀个系统的数倍。
学习中见过的场景:java.io.InputStreamReader(InputStream); java.io.OutpuStreamWriter(OutputStream)模式2.代理代理模式核⼼作⽤:通过代理,控制对对象的访问!可以详细控制访问某个(某类)对象的⽅法,在调⽤这个⽅法前做前置处理,调⽤这个⽅法后做后置处理。
(即:AOP的微观实现!)AOP(Aspect Oriented Programming⾯向切⾯编程)的核⼼实现机制!开发框架中应⽤场景:structs2中拦截器的实现;数据库连接池关闭处理;Hibernate中延时加载的实现;mybatis中实现拦截器插件;AspectJ的实现;spring中AOP的实现(⽇志拦截,声明式事务处理);web service;RMI远程⽅法调⽤模式桥接模式3.桥接实际开发中应⽤场景:JDBC驱动程序;AWT中的Peer架构;银⾏⽇志管理:格式分类:操作⽇志、交易⽇志、异常⽇志距离分类:本地记录⽇志、异地记录⽇志⼈⼒资源系统中的奖⾦计算模块:奖⾦分类:个⼈奖⾦、团体奖⾦、激励奖⾦。
设计模式目 录一、 行为模式 (2)1、 命令模式 (2)2、 观察者模式 (2)3、 策略模式 (3)4、 责任链模式 (4)5、 迭代器模式 (5)6、 中介者模式 (5)7、 状态模式 (6)8、 模板方法模式 (7)9、 访问者模式 (7)10、 备忘录模式 (8)11、 解释器模式 (9)二、 结构型模式 (9)12、 适配器模式 (9)13、 桥接模式 (10)14、 组合模式 (11)15、 装饰模式 (11)16、 外观模式 (12)17、 代理模式 (12)18、 享元模式 (13)三、 创建型模式 (14)19、 工厂方法模式 (14)20、 抽象工厂模式 (14)21、 建造者模式 (15)22、 原型模式 (16)23、 单件模式 (17)一、 行为模式1、命令模式将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。
自己的理解:将命令的发起者与命令的执行者分离,实现他们之间的松耦合关系。
这样可以方便地添加和实现各种不同命令。
参与者:mand声明执行操作的接口。
2.ConcreteCommand将一个接收者对象绑定于一个动作。
调用接收者相应的操作,以实现Execute。
3.Invoker要求该命令执行这个请求。
4.Receiver知道如何实现与执行一个请求相关的操作。
任何类都可能作为一个接收者。
2、观察者模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
自己的理解:当一个主题发生变化后,多个观察者需要作出反应时,可以将这些观察者在其观察的主题处进行注册。
当该主题变化后,就通知所有在它这里注册的观察者。
主题的更新与观察者的反应分离,这样实现主题和观察者之间的松耦合关系。
参与者:1.Subject(目标)目标知道它的观察者。
可以有任意多个观察者观察同一个目标。