设计模式
OutRoading
这个作者很懒,什么都没留下…
展开
-
设计模式 简单描述功能,自观,非完全正确
1 原型模式:浅复制Copy,深复制2 外观模式:任意组合方法后对外提供一个接口3 模板模式:方法中的抽象方法又子类具体实现抽象方法4 工厂模式:IFactory iFactory = new AddFactory();5 抽象工厂模式:因为工厂模式若AddFactory这个类需要被替代,则所有引用都要被替换,代价太大。 因此使用一个类来封装创建对象6 观察者模式:监听对象,通知...原创 2019-11-12 14:52:18 · 195 阅读 · 0 评论 -
设计模式:行为模式 - 访问者模式
访问者模式:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作UML:JAVA:import java.util.LinkedList;import java.util.List;public class VisitorTest { public static void main(String[] a...原创 2019-11-12 13:25:54 · 133 阅读 · 0 评论 -
设计模式:行为模式 - 解释器模式
解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子UML:JAVA:public class InterpreterTest { public static void main(String[] args) { Context context = new Context(); ...原创 2019-11-12 11:06:31 · 153 阅读 · 0 评论 -
设计模式:结构型 - 享元模式
享元模式:运用共享技术有效地支持大量细粒度的对象如果一个应用程序使用了大量的对象,而大量的这些对象造成了很大的存储开销时就应该考虑使用;还有对象的大多数状态可以外部状态,如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象。UML:JAVA:public class FlyWeightTest { public static void ma...原创 2019-11-12 10:43:48 · 138 阅读 · 0 评论 -
设计模式:行为模式 - 中介者模式
中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示德相互引用,从而使其松散,而且可以独立得改变它们之间的交互中介者模式很容易在系统中应用,也很容易在系统中误用。当系统出现了“多对多”交互复杂的对象群时,不要急于使用中介者模式,而要先反思你的系统在设计上是不是合理。UML:JAVA:public class MediatorTest ...原创 2019-11-12 10:28:21 · 122 阅读 · 0 评论 -
设计模式:行为模式 - 职责链模式
职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止职责链模式适合 当客户提交一个请求时,请求是沿链传递直至有一个ConcreteHandler对象负责处理它,例如:审批流程,请求流程等UML:JAVA:public class Responsibility...原创 2019-11-12 10:08:05 · 132 阅读 · 0 评论 -
设计模式:行为模式 - 命令模式
命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作UML:JAVA:public class CommandTest { public static void main(String[] args) { Receiver r = new Receiver(); ...原创 2019-11-12 09:46:01 · 141 阅读 · 0 评论 -
设计模式:结构型 - 桥接模式
桥接模式:将抽象部分与它的实现部分分离,使他们都可以独立得变化系统可能有多角度分类,每一种分类都有可能变化,那么就将这种多角度分离出来让它们独立变化,减少它们之间的耦合UML:JAVA:public class BridgeTest { public static void main(String[] args) { Abstracti...原创 2019-11-11 19:34:43 · 143 阅读 · 0 评论 -
设计模式:创建型 - 单例模式
单例模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点UML:JAVA:public class SingletonTest { public static void main(String[] args) { Singleton s1 = Singleton.getInstance(); Singlet...原创 2019-11-11 13:40:12 · 161 阅读 · 0 评论 -
设计模式:行为模式 - 迭代器模式
迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。例如foreach in总体而言,此设计模式的的研究价值大于学习实用价值UML:...原创 2019-11-11 11:37:02 · 96 阅读 · 0 评论 -
设计模式:结构型 - 组合模式
什么时候用组合模式?需求中体现部分与整体层次的结构时,以及你希望用户可以忽略组合对象与单个对象的不同,统一得使用组合结构中的所有对象时。透明方式:Component中声明所有用来管理子对象的方法,其中包括Add,Remove等。这样实现Component接口的所有子类都具备了Add和Remove。 好处:叶节点和枝节点对于外界没有区别,它们具备完全一致的行为接口 ...原创 2019-11-11 11:02:32 · 174 阅读 · 0 评论 -
设计模式:行为模式 - 备忘录模式
备忘录模式比较适用于功能复杂的,但需要维护或记录属性历史的类,或需要保存的属性只是众多属性中的一小部分时。发起者可以根据保存的记录信息还原到前一个状态例如:当某个系统追踪使用命令模式,需要实现命令的撤销功能,那么命令模式可以使用备忘录模式来存储可撤销操作的状态。UML:JAVA:public class MementoTest { public stat...原创 2019-11-08 14:48:32 · 129 阅读 · 0 评论 -
设计模式:结构型 - 适配模式
适配器:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作UML:JAVA:public class AdapterTest { public static void main(String[] args) { Target target = new Adapter(); ...原创 2019-11-08 14:27:37 · 151 阅读 · 0 评论 -
设计模式:行为模式 - 状态模式
状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类主要解决:当控制一个对象状态转换的条件表达式过于复杂时,把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的逻辑简化。 (当然,如果这个状态判断很简单,那就没必要用状态模式了)什么时候用?当一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为时,就可以考虑使用状态...原创 2019-11-08 13:54:49 · 169 阅读 · 0 评论 -
设计模式:行为模式 - 观察者模式
观察者模式定义了一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象发生改变时,会通知所有观察者对象,使他们能够自动更新自己缺点:需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,这样会给维护、扩展和重用都带来不便优点:相互耦合,让耦合的双方都依赖于抽象,而不是具体依赖于具体,从而使得各自的变化都不会影响另一边的变化观察者类一般有增加观察者。...原创 2019-11-07 17:58:52 · 232 阅读 · 0 评论 -
设计模式:创建型 - 建造者模式(生成器)
创建者模式,将一个复杂对象的结构与它的表示分离,使得通用的构建过程可以创建不同的表示好处:使得建造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所以若需要改变一个产品的内部表示,只需要再定义一个具体的建造者就可以了UML:JAVA:public class BuilderTest { public static void main(String[...原创 2019-11-07 15:22:51 · 159 阅读 · 0 评论 -
设计模式:结构型 - 外观模式
外观模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用class Facade{ SubSystemOne subSystemOne; SubSystemTwo subSystemTwo; public Facade(){ subSystemOne = new SubSystemOne(); ...原创 2019-11-06 11:26:04 · 102 阅读 · 0 评论 -
设计模式:行为模式 - 模板方法模式
模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构,即可定义该算法的某些特定步骤abstract class Template{ public void prinlnInfo(){ System.out.println("我今天吃了"+getFood()); } public abstract...原创 2019-11-06 11:10:34 · 120 阅读 · 0 评论 -
设计模式:创建型 - 原型模式
JAVA:浅复制:Work 类 中数据不会被克隆class ProtoType implements Cloneable{ private String id; private Work work; public String getId() {return id;} public void setId(String id) {this.id...原创 2019-11-06 10:59:17 · 117 阅读 · 0 评论 -
设计模式:创建型 - 工厂模式
定义一个创建对象的接口,让字类决定实例化哪个类。工厂方法使一个类的实例化延期到字类。简单工厂 和 工厂模式比较:简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。缺点:若新增哪个实例类,都需要对工厂中的逻辑做修改。UML:JAVA:public class Factor...原创 2019-11-06 09:57:21 · 95 阅读 · 0 评论 -
设计模式:结构型 - 代理模式
代理模式( Proxy),为其他对象提供一种代理以控制对这个对象的访问UML:JAVA:public class ProxyTest { public static void main(String[] args) { SubjectProxy subjectProxy = new SubjectProxy(); subjec...原创 2019-11-05 10:50:00 · 284 阅读 · 0 评论 -
设计模式:结构型 - 装饰类模式
装饰者模式是为已有功能动态地添加更多功能的一种方式动态即可以选择添加或者不添加,如下:可以直接生成主题类,不加其他功能。也可以选择性添加需要的功能。UML:可简化:最简化:JVAVA:public class Decorator { public static void main(String[] args) { //主体...原创 2019-11-05 09:57:32 · 135 阅读 · 0 评论 -
简单工厂模式 和 策略模式 结合
public class SimpleFactoryAndStraregy { public static void main(String[] args) { Animal animal =AnimalFactory.createAnimal("cat"); animal.animalPlay(); }}class AnimalFacto...原创 2019-11-04 18:16:01 · 267 阅读 · 0 评论 -
设计模式:行为模式 - 策略模式
在上下文或者对象中的方法进行算法封装,方法也可分成父类方法和子类方法UML:JAVA:public class StrategyTest { public static void main(String[] args) { Context context = new Context(new ConcreteStrategyA()); }...原创 2019-11-04 17:20:40 · 90 阅读 · 0 评论 -
非设计模式:简单工厂模式
用字符串创建对象,返回对象的父类需求:给两个数和一个符号,做相关的运算UML:JAVA:public class SimpleFactory { public static void main(String[] args) { Operation op =OperationFactory.createOperate("+"); }...原创 2019-11-04 16:34:28 · 119 阅读 · 0 评论