
设计模式
文章平均质量分 79
wangmuduxingxia2
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
23种设计模式
1、六大设计原则(1)单一职责原则(2)里氏替换原则(3)依赖倒置原则(4)接口隔离原则(5)迪米特法则(6)开闭原则 2、按照目的来分,23中设计模式可以分为创建型、结构型、行为型。 (1)创建型模式用来处理对象的创建过程 工厂方法模式(Factory Method Pattern) 抽象工厂模式(Abstract Factory Patte...原创 2010-10-30 11:41:56 · 108 阅读 · 0 评论 -
设计模式六大设计原则之接口隔离原则
接口隔离原则 1、定义客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。 2、问题由来类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。 3、问题由来将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。...原创 2014-08-21 10:50:24 · 114 阅读 · 0 评论 -
设计模式六大设计原则之迪米特法则
迪米特法则 1、定义一个对象应该对其他对象保持最少的了解。 2、问题由来类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。 3、解决方案尽量降低类与类之间的耦合。 4、详解 自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低...原创 2014-08-21 11:20:37 · 150 阅读 · 0 评论 -
设计模式六大设计原则之开闭原则
开闭原则 1、定义一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 2、问题由来在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。 3、解决方案当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变...原创 2014-08-21 11:28:42 · 143 阅读 · 0 评论 -
14、建造者模式
建造者模式 1、定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 2、结构部 产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。抽象建造者:引入抽象...原创 2014-08-26 15:05:14 · 139 阅读 · 0 评论 -
15、抽象工厂模式
抽象工厂模式 1、定义多个抽象产品类,派生出多个具体产品类;一个抽象工厂类,派生出多个具体工厂类;每个具体工厂类可创建多个具体产品类的实例。 2、结构图产品类接口:ProductA、ProductB定义两个产品接口产品实现:ProductA1、ProductA2、ProductB1、ProductB2抽象工厂接口:AbstractFactory工...原创 2014-08-26 15:57:53 · 128 阅读 · 0 评论 -
16、责任链模式
责任量模式 1、定义责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。 2、结构图 3、代码(1)过滤器接口filterpubl...原创 2014-08-26 17:21:38 · 129 阅读 · 0 评论 -
17、命令模式
命令模式 1、定义将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;对请求排队或记录日志,以及支持可撤销的操作 2、结构图 ● 客户端(Client)角色:创建一个具体命令(ConcreteCommand)对象并确定其接收者。 ● 命令(Command)角色:声明了一个给所有具体命令类的抽象接口。 ● 具体命令(ConcreteC...原创 2014-08-27 15:00:29 · 96 阅读 · 0 评论 -
18、中介者模式
中介者模式 1、定义用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。 2、结构图 抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并由子类去实现。中介者实现类:从抽象中介者继承而来,实现抽象中介者中定义的事件方法。从一个同事类...原创 2014-08-27 16:33:13 · 165 阅读 · 0 评论 -
19、解释器模式
解释器模式 1、定义给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。 2、结构图 抽象解释器:声明一个所有具体表达式都要实现的抽象接口(或者抽象类),接口中主要是一个interpret()方法,称为解释操作。具体解释任务由它的各个实现类来完成,具体的解释器分别由终结符解释器TerminalExpression和非终结符解释...原创 2014-08-27 17:37:10 · 101 阅读 · 0 评论 -
20、迭代器模式
迭代器模式 1、定义提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。 2、结构图 抽象容器:一般是一个接口,提供一个iterator()方法,例如java中的Collection接口,List接口,Set接口等。具体容器:就是抽象容器的具体实现类,比如List接口的有序列表实现ArrayList,List接口的链表实现LinkList,Set...原创 2014-08-29 10:29:34 · 121 阅读 · 0 评论 -
21、备忘录模式
备忘录模式 1、定义在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 2、结构图 Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态。Originator可以根据需要决定Memento存储自己的哪些内部状态。Mement...原创 2014-08-29 11:17:50 · 106 阅读 · 0 评论 -
22、状态模式
状态模式 1、定义许一个对象的内部状态改变时改变它的行为。 2、结构图 Light :环境,也称为上下文,用来定义客户感兴趣的接口,同时维护一个具体处理当前状态的实例对象。LightState:状态接口,用来封装与上下文的一个特定状态所对应的行为。On/OffState:具体实现状态的处理类,每个实现一个跟上下文相关联的状态的具体处理。 3、代码...原创 2014-09-04 14:25:55 · 127 阅读 · 0 评论 -
23、模板方法模式
模板方法模式 1、定义定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤 2、结构图 AbstractSort是一个抽象类,将sort方法抽象,showSortResult实现。ConcreteSort是对AbstractSort的实现,并实现sort方法3、代码(1)Abstract...原创 2014-09-04 14:58:43 · 111 阅读 · 0 评论 -
设计模式六大设计原则之依赖倒置原则
依赖倒置原则 1、定义高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 2、问题由来 类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。 3、解决方案...原创 2014-08-21 10:37:10 · 140 阅读 · 0 评论 -
设计模式六大设计原则之里氏替换原则
里氏替换原则肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑。其实原因就是这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的。 1、定义如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T...原创 2014-08-19 18:26:24 · 132 阅读 · 0 评论 -
设计模式六大设计原则之单一职责原则
单一职责原则1、定义不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 2、问题由来类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。 3、解决方案遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,...原创 2014-08-19 17:53:59 · 109 阅读 · 0 评论 -
5、动态代理
1、Java的动态代理机制代理模式是常用的Java设计模式。代理类主要负责为委托类预处理消息、过滤信息、把消息转发给委托类,以及事后处理信息等。动态代理类不仅简化了编程工作,而且提高了软件系统的扩展性和可维护性。我们可以通过实现java.lang.reflect.InvocationHandler接口提供一个执行处理器,然后通过java.lang.reflect.Proxy得到一个代理对象,通...原创 2012-11-27 17:29:07 · 74 阅读 · 0 评论 -
1、简单工厂模式
简单工厂模式简答工厂模式是类的创建模式,又可以叫静态工厂方法模式。1、结构图 简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。2、与其他模式关系 (1)单例模式单例模式使用了简单工厂模式,但不是简单工厂模式的退化模式。单例模式要求其构造方法是私有的,客户端不能直接实例...原创 2013-07-08 12:37:52 · 102 阅读 · 0 评论 -
2、工厂方法模式
工厂方法模式工厂方法模式是类的创建模式,又叫虚拟构造子方法或者多态工厂模式。1、结构图 核心的工厂类不在负责产品的创建,而具体创建的工作交给子类去做。 ...原创 2013-07-08 13:53:00 · 105 阅读 · 0 评论 -
3、单例模式
单例模式1、三大要点(1)只能有一个实例(2)自己创建实例(3)必须自行向整个系统中提供这个实例因此单例类中的构造方法必须是私有方法 2、饿汉式单例类/** * 饿汉式单例 * @author Administrator * */public class Singeton { /** * 加载对象时创建Singeton类 */...原创 2013-07-09 10:14:30 · 80 阅读 · 0 评论 -
4、原型模式
原型模式1、结构原型类必须实现一个标示接口Cloneable,表示这个类支持复制,否则调用clone方法会报CloneNotSupportException异常。 2、浅克隆和深克隆(1)浅克隆被复制对象的所有变量都与原来的对象相同,而所有对其他对象的引用都指向原来的对象。(2)深克隆深克隆不仅被复制的所有变量与原理啊对象相同,而且其他对象的引用也会被创建一个新...原创 2013-07-10 12:33:57 · 97 阅读 · 0 评论 -
6、适配器模式
设配器模式1、结构适配器模式就是将一个接口转换为另一种接口以便使用。例如实例中需要将ps2port设备转换为usbport设备以便computer使用这时就需要一个转换器(适配器)PS2PortToUsbPort实现UsbPort接口 2、代码(1)适合电脑使用的use接口public interface UsbPort { public void exe()...原创 2013-07-10 12:57:22 · 76 阅读 · 0 评论 -
7、桥梁模式
桥梁模式(bridge pattern)1、桥梁模式桥梁模式的用意是“使抽象化和实现化解耦,使得两者可以独立的变化”。 抽象化存在于多个实例之间共同的概念性联系,就是抽象化。 实现化抽象化给出的具体实现就是实现化。 解耦所谓耦合就是两个实体之间的某种强关联,将他们之间的强关联去掉就是解耦,一般情况下通过聚合代替继承实现解耦。 2、结构图...原创 2013-07-11 09:50:58 · 108 阅读 · 0 评论 -
8、组合模式
组合模式1、组合模式组合模式属于对象中的结构模式,有时又叫做部分-整体模式。合成模式是将部分和整体的关系用树结构表示出来。2、结构 以上类图结构涉及三种角色:抽象构件角色:这是一个抽象角色,它给参加组合的对象规定一个接口,这个角色给出共有的接口和默认行为。树叶构件角色:代表参加组合的树叶对象。树枝构件角色:代表参加组合的有子对象的对象,并给出树枝构件对象...原创 2013-07-11 14:32:42 · 159 阅读 · 0 评论 -
9、装饰模式
装饰模式1、装饰模式装饰模式(Decorator)又名包装(Wrapper)模式,装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案,可以在不创造更多的子类的模式下,将对象的功能加以扩展。 2、结构 装饰模式中的各个角色有:(1)抽象构件角色:给出一个抽象接口,(2)具体构件角色:对抽象构件角色的具体实现(3)装饰角色:持有一个构件对象的实例...原创 2013-07-16 14:43:38 · 127 阅读 · 0 评论 -
10、策略模式
策略模式1、定义策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 2、结构图 3、代码(1)策略接口public interface IStrategy { public int calculate(int a, int b); }(2)加法算法实现IStrategy ...原创 2014-08-12 17:03:45 · 107 阅读 · 0 评论 -
11、观察者模式
观察者模式1、定义观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。2、结构 3、代码(1)主题接口 public interface ISubject { public ISubject registerObserver(IObserver obs...原创 2014-08-14 15:05:44 · 89 阅读 · 0 评论 -
12、门面模式(facade)
门面模式(facade)1、门面模式门面模式是对象的结构模式,是通过一个代理一些复杂而又繁琐的操作,客户端只需调用改类中的方法,不必关心后台复杂的操作。 2、结构 在结构图中包含两种角色‘门面角色:客户端可以通过门面角色与各个子系统进行通信。子系统角色:可以同时有一个或者多个 3、代码(1)电灯类public class Light { publ...原创 2014-08-15 15:03:20 · 96 阅读 · 0 评论 -
13、享元模式
享元模式1、定义享元模式(FlyWeight),运用共享技术有效的支持大量细粒度的对象。 2、结构图 单纯享元模式所涉及到的角色如下: ● 抽象享元(Flyweight)角色 :给出一个抽象接口,以规定出所有具体享元角色需要实现的方法。 ● 具体享元(ConcreteFlyweight)角色:实现抽象享元角色所规定出的接口。如果有内蕴状态的话,必须负责...原创 2014-08-18 15:37:06 · 133 阅读 · 0 评论 -
24、访问者模式
访问者模式 1、定义封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。 2、结构图 抽象访问者:抽象类或者接口,声明访问者可以访问哪些元素,具体到程序中就是visit方法中的参数定义哪些对象是可以被访问的。访问者:实现抽象访问者所声明的方法,它影响到访问者访问到一个类后该干什么,要做什么事情。...原创 2014-09-05 09:48:37 · 149 阅读 · 0 评论