
设计模式进阶
莫余
无论如何,都要去试一试,哪怕不能证明我可以!
展开
-
ULM图解 “23种设计模式”,及实例的类图
UML图解设计模式23种设计模式分为三大类创建型模式(5种)工厂方法模式抽象工厂模式单例模式建造者模式原型模式结构型模式(7种)适配器模式装饰模式代理模式外观模式桥接模式组合模式享元模式行为型模式(11种)策略模式模板方法模式观察者模式迭代器模式责任链模式命令模式备忘录模式状态模式访问者模式中介者模式解释器模式23种设计模式分为十大部分1.适应设计模式适配器模式迭代器模式2.交给子类模板方法模式工厂方法模式3.生成实例原创 2020-09-22 23:44:16 · 1064 阅读 · 0 评论 -
对设计模式的认识,以及学到的知识
经过一学期的学习,详细总结你对设计模式的认识、学到的知识:认识:对于设计模式,我认为就是前人在软件开发过程中总结下来的一套规范化的理论,它教给我们如何去设计出高内聚、低耦合的软件产品,提高软件的复用性,以减少软件后期维护的成本。软件产品生命周期并不是完成需求就结束了,而是对整个架构的思考,怎么才能设计出更加灵活的、可靠的软件,如何在不重构代码的情况下应对源源不断的需求,这一切都是可以使用各种设计模式的组合应用来解决的。知识:通过学习设计模式,我对于Java相关开发有了一个更深入的理解,以前开发原创 2020-09-01 09:57:33 · 1041 阅读 · 0 评论 -
23种设计模式各自所满足的设计原则
创建型模式Factory Method模式:依赖倒转原则开放封闭原则里氏代换原则Abstract Factory模式开放封闭原则Builder模式开放封闭原则Prototype模式依赖倒转原则Singleton模式迪米特法则结构型模式Adapter模式开放封闭原则Bridge模式开放封闭原则里氏代换原则组合复用原则Composite模式单一职责原则Decorator模式开放封闭原则合成聚合原则Facade模式迪米特法则原创 2020-08-25 16:51:51 · 423 阅读 · 0 评论 -
用类表示状态的 State模式
文章目录State模式应用场景本质优点缺点角色State模式的类图示例程序示例程序的类图示例代码拓展思路相关设计模式满足的原则State模式应用场景状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的逻辑简化。允许一个对象在其内部状态改变时改变它的行为,这个对象看起来似乎修改了它的类。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的系列类当中,可以把复杂的原创 2020-08-25 16:21:54 · 486 阅读 · 0 评论 -
命令也是类的 Command模式
文章目录Command模式应用场景本质优点缺点角色Command模式的类图示例程序示例程序的类图示例代码拓展思路相关设计模式满足的原则Command模式应用场景请求队列化支持取消操作对系统的操作功能重新执行一遍(恢复)事务操作本质封装请求优点命令模式使新的命令很容易地被加入到系统里。允许接收请求的一方决定是否要否决(Veto) 请求。能较容易地设计一个命令队列。可以容易地实现对请求的Undo和Redo。在需要的情况下,可以较容易地将命念记入日志。命令模式把请求一个操作原创 2020-08-25 14:57:28 · 474 阅读 · 0 评论 -
保存对象状态的 Memento模式
文章目录Memento模式应用场景本质优点缺点角色Memento模式的类图示例程序示例程序的类图示例代码拓展思路相关设计模式满足的原则Memento模式应用场景如果必须保存一个对象在某一个时刻的全部或者部分状态,方便在以后需要的时候,可以把该对象恢复到先前的状态,可以使用备忘录模式。本质保存和恢复内部状态优点使用备忘录模式可以把复杂的发起人内部信息对其他的对象屏蔽起来,从而可以恰当地保持封装的边界。本模式简化了发起人类。发起人不再需要管理和保存其内部状态的一个个版本,客户端可以自行原创 2020-08-25 13:32:54 · 516 阅读 · 0 评论 -
发送状态变化通知的 Observer模式
文章目录设计模式应用场景本质优点缺点角色设计模式的类图示例程序示例程序的类图示例代码拓展思路相关设计模式满足的原则设计模式应用场景主要用于1:N的通知。当一个对象(目标对象Subject或Objservable)的状态变化时, 他需要及时告知一系列对象(观察者对象Observer) , 令他们做出响应本质触发联动优点观察者模式实现了观察者和目标之间的抽象耦合。观察者模式实现了动态联动。观察者模式支持广播通信。被观察者会向所有的登记过的观察者发出通知。缺点可能会引起无谓的原创 2020-08-25 10:59:08 · 236 阅读 · 0 评论 -
推卸责任的 Chain of Responsibility模式
文章目录Chain of Responsibility模式应用场景本质优点缺点角色Chain of Responsibility模式的类图示例程序示例程序的类图示例代码拓展思路相关设计模式满足的原则Chain of Responsibility模式应用场景使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。责任链模式降低了请求的发送端和接收端之间的耦合,使多个对象都有机会处理这个请求。本质分离职责,原创 2020-08-25 09:59:46 · 473 阅读 · 0 评论 -
访问数据结构并处理数据的 Visitor模式
文章目录Visitor模式应用场景本质优点缺点角色Visitor模式的类图示例程序示例程序的类图示例代码拓展思路相关设计模式满足的原则Visitor模式应用场景访问者模式仅应当在被访问的类结构非常稳定的情况下使用访问者模式提供了 倾斜的可扩展性设计:方法集合的可扩展性和类集合的不可扩展性。换言之,如果系统的数据结构是频繁变化的,则不适合使用访问者模式。本质预留通路,回调实现优点访问者模式使得增加新的操作变得很容易。增加新的操作就意味着增加一个新的访问者类。访问者模式将有关的行为集原创 2020-08-24 22:20:55 · 221 阅读 · 0 评论 -
只有一个仲裁者的 Mediator模式
文章目录Mediator模式应用场景本质优点缺点角色Mediator模式的类图示例程序示例程序的类图示例代码拓展思路相关设计模式满足的原则Mediator模式应用场景将对象间的交互和通信封装在一个类中,各个对象间的通信不必显式去声明和引用,大大降低了系统的复杂性能。本质封装交互优点将多对多的通信转化为一对多的通信,降低了系统的复杂性。Mediator还获得系统解耦的特性,降低了系统的耦合性,Mediator和各个Colleague就可以相互独立地修改了。控制集中,集中的优点就是便原创 2020-08-24 21:29:47 · 501 阅读 · 0 评论 -
23句话概括23种设计模式
创建型模式5个抽象工厂:提供一个创建一系列或相关依赖的对象的接口,不需要指定他们具体的类。建造者模式:将一个复杂对象的构建与它的表示分离,同样的构建过程创建不同的表示。工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂模式是一个类的实例化,延迟到其子类。原型模式:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。单例模式:保证一个类仅有一个实例,并提供一个访问全局的访问点。都是用各自的方法去实现创建自己的实力。工厂方法和抽象工厂很相原创 2020-08-23 15:53:55 · 145 阅读 · 0 评论 -
只在必要时生成实例的 Proxy模式
文章目录Proxy模式应用场景本质优点缺点角色Proxy模式的类图示例程序示例程序的类图示例代码拓展思路相关设计模式满足的原则Proxy模式应用场景保护目标对象增强目标对象本质控制对象访问优点代理模式能将代理对象与真实对象被调用的目标对象分离。一定程度上降低了系统的耦合度,扩展性好。保护目标对象。增强目标对象缺点代理模式会造成系统设计中类的数目的增加。在客户端和目标对象增加一个代理对象,会造成请求处理速度变慢增加了系统的复杂度。角色抽象角色:通过接口或抽象原创 2020-08-23 10:04:06 · 417 阅读 · 0 评论 -
简单窗口的 Facade模式
文章目录Facade模式应用场景本质优点缺点角色Facade模式的类图示例程序示例程序的类图示例代码拓展思路相关设计模式满足的原则Facade模式应用场景本质封装交互、简化调用优点屏蔽了外部客户端和系统内部模块的交互Facade的功能可以被多个客户端调用,可以实现复用(功能的共享)对使用Facade的人员来说,Facade大大的节省了他们的学习成本缺点不符合开闭原则角色Facade模式的类图示例程序示例程序的类图示例代码public class System1原创 2020-08-23 09:10:55 · 203 阅读 · 0 评论 -
装饰边框 与 被装饰物 一致的 Decorator模式
文章目录Decorator模式应用场景本质优点缺点角色Decorator模式的类图示例程序示例程序的类图示例代码拓展思路相关设计模式满足的原则Decorator模式应用场景当我们需要为某个现有的对象,动态的增加一个新的功能或职责时,可以考虑使用装饰模式。适应于某个对象的职责经常发生变化或者经常需要动态的增加职责,避免因为这种为了适应这样的变化,而增加继承子类扩展的方式本质动态组合优点装饰模式与继承关系的目的都是要扩展对象的功能,但是装饰模式可以提供比 继承更多的灵活性。通过使用不原创 2020-08-22 17:40:10 · 335 阅读 · 0 评论 -
容器和内容一致性的 Composite模式
文章目录Composite模式应用场景本质优点缺点角色Composite模式的类图示例程序示例程序的类图示例代码拓展思路相关设计模式满足的原则Composite模式应用场景需求中是体现部分与整体层次的结构时希望用户忽略组合对象与单个对象的不同, 统一的使用组合结构中的所有对象时本质统一叶子对象和组合对象优点定义了包含基本对象和组合对象的类层次结构基本对象可以组合成组合对象,组合对象又能组合成更复杂的组合对象,可以不断地递归组合下去,从而构成-一个统一的组 合对象的类层次结构统一原创 2020-08-22 16:20:09 · 431 阅读 · 0 评论 -
将关联零件组装成产品的 Abstract Factory模式
文章目录Abstract Factory模式应用场景本质优点缺点角色Abstract Factory模式的类图示例程序示例程序的类图示例代码拓展思路相关设计模式满足的原则Abstract Factory模式应用场景希望一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节时。一个系统有多于一个的产品族, 而系统只消费其中某一产品族。本质选择产品族的实现优点增加产品族: Abstract Factory很好的支持了"开放一封闭"原则。缺点增加新产品的等级结构:需要修改所有原创 2020-08-22 15:33:25 · 213 阅读 · 0 评论 -
组装复杂实例的 Builder模式
文章目录Builder模式应用场景本质优点缺点角色Builder模式的类图示例程序示例程序的类图示例代码拓展思路相关设计模式满足的原则Builder模式应用场景本质优点缺点角色Builder模式的类图示例程序示例程序的类图示例代码拓展思路相关设计模式满足的原则...原创 2020-08-22 14:26:00 · 245 阅读 · 0 评论 -
通过复制生成实例的 Prototype模式
文章目录Prototype模式应用场景本质优点缺点角色Prototype模式的类图示例程序示例程序的类图示例代码拓展思路相关设计模式满足的原则Prototype模式应用场景需要一个类的大量对象的时候,使用原型模式是最佳选择,因为原型模式是在内存中对这个对象进行拷贝,要比直接new这个对象性能要好很多,在这种情况下,需要的对象越多,原型模式体现出的优点越明显。如果一个对象的初始化需要很多其他对象的数据准备或其他资源的繁琐计算,那么可以使用原型模式。当需要一个对象的大量公共信息,少量字段进行个性化设原创 2020-08-22 12:47:36 · 153 阅读 · 0 评论 -
整体地替换算法的 Strategy模式
文章目录Strategy模式应用场景本质优点缺点角色Strategy模式的类图示例程序示例程序的类图示例代码拓展思路相关设计模式满足的原则Strategy模式应用场景需要使用多个if_else 的时候本质整体替换优点使用继承可以把公共的代码移到父类里面,从而避免代码重复。避免使用多重条件(if-else)语句缺点只适用于客户端知道算法或行为的情况。备选的策略很多的话,那么对象的数目就会很多。角色Strategy (策略)Strategy角色负责决定实现策略所必原创 2020-08-22 10:42:48 · 178 阅读 · 0 评论 -
加个“适配器”以便于复用的 Adapter模式
文章目录Adapter模式应用场景本质优点缺点角色设计模式的类图示例程序示例程序的类图示例代码拓展思路相关设计模式满足的原则Adapter模式应用场景本质转换匹配,复用功能优点缺点角色设计模式的类图示例程序示例程序的类图示例代码拓展思路相关设计模式满足的原则...原创 2020-08-22 10:01:33 · 352 阅读 · 0 评论 -
一个一个遍历的 Iterator模式
文章目录Iterator模式应用场景本质优点缺点角色设计模式的类图示例程序示例程序的类图示例代码拓展思路相关设计模式满足的原则Iterator模式应用场景本质优点缺点角色设计模式的类图示例程序示例程序的类图示例代码拓展思路相关设计模式满足的原则...原创 2020-08-21 20:51:53 · 164 阅读 · 0 评论 -
将 类的功能层次结构 与 类的实现层次结构 分离的 Bridge模式
文章目录Bridge模式应用场景本质优点缺点角色设计模式的类图示例程序示例程序的类图示例代码拓展思路相关设计模式满足的原则Bridge模式应用场景需要将类的功能层次结构和类的实现层次结构连接起来,增加功能和实例本质分离抽象和实现优点便于扩展缺点暂无角色Abstraction (抽象化)该角色位于“类的功能层次结构”的最上层。它使用Implementor角色的方法定义了基本的功能。该角色中保存了Implementor 角色的实例。在示例程序中,由Display类扮演此角原创 2020-08-11 18:34:07 · 396 阅读 · 1 评论 -
共享对象,避免浪费的 Flyweight模式
文章目录Flyweight模式应用场景本质优点缺点角色设计模式的类图示例程序示例程序的类图示例代码拓展思路相关设计模式满足的原则Flyweight模式应用场景本质优点缺点角色设计模式的类图示例程序示例程序的类图示例代码拓展思路相关设计模式Proxy模式如果生成实例的处理需要花费较长时间,那么使用Flyweight模式可以提高程序的处理速度。而Proxy模式则是通过设置代理提高程序的处理速度。Composite模式有时可以使用Flyweight模式共享Composit原创 2020-08-01 22:37:21 · 406 阅读 · 0 评论 -
只有一个实例的 Singleton模式
文章目录Singleton模式应用场景本质优点缺点角色设计模式的类图示例程序示例程序的类图示例代码拓展思路相关设计模式满足的原则Singleton模式应用场景在一个系统要求一个类只有一个实例时才应当使用单例模式。反过来,如果一个类可以有几个实例共存,就不要使用单例模式。本质控制实例数目优点在单例模式中,活动的单例只有一个实例,对单例类的所有实例化得到的都是相同的一个实例。这样就防止其它对象对自己的实例化,确保所有的对象都访问一个实例 (私有构造函数)单例模式具有一定的伸缩性。类通原创 2020-07-19 21:24:53 · 213 阅读 · 0 评论 -
将具体处理交给子类的 Template Method模式
package templateMethod;public abstract class AbstractDisplay { public abstract void open(); public abstract void print(); public abstract void close(); public void display() { open(); for(i...原创 2020-07-05 22:43:28 · 205 阅读 · 0 评论 -
将实例生成交给子类的 Factory Method模式
文章目录Factory Method模式应用场景本质优点缺点角色Factory Method模式的类图示例程序示例程序的类图示例代码拓展思路生成实例的三种方法相关的设计模式Factory Method模式Singleton模式Composite模式Iterator模式满足的原则Factory Method模式应用场景如果一个类需要创建某个接口的对象,但是又不知道具体的实现,这种情况可以选用工厂方法模式,把创建对象的工作延迟到子类中实现如果一个类本身就希望由它的子类来创建所需的对象的时候,应该使用工原创 2020-06-14 22:46:00 · 167 阅读 · 0 评论 -
学习设计模式前必须掌握的登场角色的名称,方便后来的理解
23种设计模式的登场角色Iterator模式Iterator(迭代器)ConcreteIterator(具体的迭代器)Aggregate(集合)ConcreteAggregate(具体的集合)Adapter模式Target(对象)Client(请求者)Adaptee(被适配)Adapter(适配)Template Method模式AbstractClass(抽象类)ConcreteClass(具体类)Factory Method模式Product(产品)Crea原创 2020-06-07 16:23:41 · 275 阅读 · 0 评论