
设计模式
hello-friend
青年程序员
展开
-
23种设计模式
23种设计模式原创 2017-01-18 19:32:31 · 280 阅读 · 0 评论 -
中介者模式(Mediator)
1. 定义:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用。从而使其耦合松散,而且可以独立地改变它们之间的交互。2. 类图:Mediator:抽象中介者,抽象中介者角色定义统一的接口用于各同事角色之间的通信。Concrete Mediator:具体中介者,具体中介者通过协调各同事角色实现写作行为,因此它必须依赖于各个同事角色。Colleague:同事,每一个同事角色都知道中原创 2017-01-18 19:09:56 · 219 阅读 · 0 评论 -
原型模式(Prototype)
1. 定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。2. 类图:3. 原型模式解析:原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。对象拷贝时,类的构造函数是不会被执行的。原创 2017-01-18 18:43:30 · 209 阅读 · 0 评论 -
状态模式(State)
1. 定义:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。2. 类图: 3. 状态模式解析:状态模式主要解决的是控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。原创 2017-01-18 17:08:46 · 224 阅读 · 0 评论 -
访问者模式(Visitor)
1. 定义:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。2. 类图:Visitor:抽象访问者,声明访问者可以访问哪些元素,具体到程序中就是visit方法的参数定义哪些对象是可以被访问的。ConcreteVisitor:访问者访问到一个类后要做什么事情Element:声明接受哪一类型的访问者访问,程序上是通过accept方法中定义的参数来原创 2017-01-18 15:37:08 · 266 阅读 · 0 评论 -
责任链模式(Chain of Responsibility)
1. 定义:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。2. 类图:3. 责任链模式解析:每个环节只有两个选项:要么承担责任做出回应,要么向下传递请求,最终会有环节做出回应。责任链有一缺点:调试不是很方便,特别是链条比较长,环节比较多的时候,由于才有了类似递归的方式,调试的时候逻辑可能比较复杂。原创 2017-01-18 11:36:32 · 254 阅读 · 0 评论 -
观察者模式(Observer)
1. 定义:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。2. 类图:3. 观察者模式解析:JDK中提供了:java.util.Observable实现类和java.util.Observer接口广播链问题:根据经验建议,在一个观察者模式中最多出现一个对象既是观察者也是被观察者,也就是说消息最多转发一次原创 2017-01-18 10:28:19 · 198 阅读 · 0 评论 -
组合模式(Composite)
1. 定义:将对象组合成树形结构以表示”部分-整体“的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。2. 类图:Component:抽象构件角色,定义参加组合对象的共有方法和属性,可以定义一些默认的行为或属性; Leaf:叶子对象,其下没有其他分支 Composite:树枝对象,它的作用是组合树枝节点和叶子节点3. 组合模式解析:组合模式主要是用来描述整体和部分的关系,用的最多原创 2017-01-17 19:45:40 · 239 阅读 · 0 评论 -
命令模式(Command)
1. 定义:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。2. 类图:3. 命令模式解析:命令模式将发出请求的对象和执行请求的对象解耦。在被解耦的两者之间是通过命令对象进行沟通的。命令对象封装了接收者和一个或一组动作。原创 2017-01-17 17:09:04 · 225 阅读 · 0 评论 -
桥接模式(Bridge)
1. 定义:将抽象部分与她的实现部分分离,使它们都可以独立地变化2. 类图:3. 桥接模式解析:业务抽象角色引用业务实现角色。 抽象和实现可以独立扩展,不会影响对方。原创 2017-01-17 16:09:53 · 300 阅读 · 0 评论 -
模版方法模式
1. 定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模版方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。原创 2017-01-17 14:58:18 · 301 阅读 · 0 评论 -
单例模式
1. 定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。2. 通用单例模式:public class SingletonPattern { private static SingletonPattern singletonPattern = null; private SingletonPattern() { } public static SingletonPa原创 2017-01-16 17:25:01 · 278 阅读 · 0 评论 -
外观模式(Facade)
1. 定义:为子系统中的一组接口提供一个一致的界面,次模式定义了一个高层接口,这个接口使得这一子系统更加容易使用2. 类图:3. 外观模式解析:外观不只是简化了接口,也将客户从组件的子系统中解耦。 外观和适配器可以包装许多类,但是外观的意图是简化接口,而适配器的意图是将接口转换成不同接口。原创 2017-01-16 16:57:13 · 274 阅读 · 0 评论 -
适配器模式
定义: 将一个类的接口转换成客户希望的另外一个接口。类图: 对象适配 类适配原创 2017-01-16 16:13:40 · 305 阅读 · 0 评论 -
代理模式
1. 定义:为其他对象提供一种代理以控制对这个对象的访问。2. 类图:3. 代理模式解析:- 代理模式和装饰模式的区别:两者目的不同,装饰者为对象增加行为,而代理是控制对象的访问。- 代理和适配器模式的区别:代理和适配器都是挡在其他对象的前面,并负责将请求转发给它们。适配器会改变对象适配的接口,而代理则实现相同的接口。代理模式适用的一些场合:远程代理,也就是为一个对象在不同的地址空间提供局部代表。原创 2017-01-16 15:31:35 · 254 阅读 · 0 评论 -
建造者模式
1. 定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示原创 2017-01-13 19:24:20 · 1342 阅读 · 0 评论 -
装饰模式
1. 定义:动态地给yield对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。原创 2017-01-13 15:34:41 · 272 阅读 · 0 评论 -
抽象工厂模式
1. 定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。原创 2017-01-13 11:28:21 · 254 阅读 · 0 评论 -
工厂方法模式
1. 定义:定义了一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。原创 2017-01-13 09:53:52 · 243 阅读 · 0 评论 -
简单工厂
简单工厂其实不是一个设计模式,反而比较像是一种编程习惯。经常被使用原创 2017-01-12 20:06:21 · 352 阅读 · 0 评论 -
策略模式
1. 定义:它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。原创 2017-01-12 15:44:48 · 301 阅读 · 0 评论 -
UML中的六大关系
一、UML中的六大关系在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。转载 2017-01-09 11:51:57 · 251 阅读 · 0 评论