设计模式
文章平均质量分 55
if_i_were_a
你好
展开
-
设计模式 (四)抽象工厂模式
在有道云笔记上写的,抽象工厂模式http://note.youdao.com/noteshare?id=684ceb68fafe75e7f2b273d0460e8420&sub=0540A1F277B245A494CB02E223440771抽象工厂模式:提供一个创建一系列相关或相互依赖的对象的接口,而无需指定他们具体的类抽象工厂模式的优点:易于交换产品系列,在一个应用中只需要...原创 2018-10-11 19:04:38 · 131 阅读 · 0 评论 -
设计模式(十九)命令者模式
命令模式(Command)将一个请求封装为一个对象,从而可以使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作http://img5.imgtn.bdimg.com/it/u=349229137,3311956528&fm=26&gp=0.jpg 命令模式的代码如下:public abstract class Command...原创 2018-11-13 16:46:58 · 286 阅读 · 0 评论 -
设计模式(二十)职责链模式
职责链模式(Chain Of Responsbility)使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象啊连城一条链,并沿着这条链传递改请求,直到有一个对象处理他为止http://img1.imgtn.bdimg.com/it/u=758642067,1600747222&fm=26&gp=0.jpgpublic abstrac...原创 2018-11-13 17:16:52 · 145 阅读 · 0 评论 -
设计模式(二十一)中介者模式
中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从未使其耦合松散,而且可以独立地改变他们之间的交互类图的来源:http://img5.imgtn.bdimg.com/it/u=3750997240,1864206719&fm=26&gp=0.jpgpublic abstract class Media...原创 2018-11-13 19:32:35 · 146 阅读 · 0 评论 -
设计模式(二)享元模式
享元模式(FlyWeight)运用共享技术有效地支持大量细粒度的对象类图的来源https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2277621520,4288462490&fm=26&gp=0.jpgpublic abstract class FlyWeight { public abs...原创 2018-11-13 20:28:33 · 647 阅读 · 0 评论 -
设计模式(二十二)解释器模式
解释器模式(Interpreter):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子类图的来源https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2042037081,2368084394&fm=26&gp=0.jpg解释器模式的代码如下:pub...原创 2018-11-13 20:48:22 · 142 阅读 · 0 评论 -
设计模式二十三(访问者模式)
访问者模式(Visitor):表示一个作用于对象结构中的各个元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作类图的来源https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=641393147,346236742&fm=26&gp=0.jpg 访问者模式的代码如下:...原创 2018-11-13 21:23:48 · 149 阅读 · 0 评论 -
设计模式(七)策略模式
策略模式:(Strategy):它定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户public abstract class Strategy { public abstract void AlgorithmInterface();}public class ConcreteStrategyA extends Strategy...原创 2018-11-12 10:30:23 · 207 阅读 · 0 评论 -
设计模式(八)装饰模式
装饰模式(Decotator):动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活这是在网上找的关于装饰模式的类图,http://img0.imgtn.bdimg.com/it/u=3834882730,1020120806&fm=214&gp=0.jpgComponent是定义一个对象的接口,可以给这些对象动态地添加职责,Concret...原创 2018-11-12 14:37:12 · 207 阅读 · 0 评论 -
设计模式(九)代理模式
代理模式(Proxy)为其他对象提供一种代理以控制对这个对象的访问public abstract class Subject { public abstract void request();}public class RealSubject extends Subject { @Override public void request() { ...原创 2018-11-12 15:15:45 · 148 阅读 · 0 评论 -
设计模式(十)外观模式
外观模式(Facade)为子系统中的一组接口提供一个一致的界面。此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用public class SubSystenOne { public void methodOne() { System.out.println("子系统方法一"); }}public class SubSystemT...原创 2018-11-12 15:35:01 · 153 阅读 · 0 评论 -
设计模式(十八)桥接模式
桥接模式(Bridge),将抽象部分与他的实现部分分离,使他们都可以独立地变化类图的来源http://img5.imgtn.bdimg.com/it/u=1548947177,2280329040&fm=26&gp=0.jpgpublic abstract class Implementor { public abstract void operation...原创 2018-11-13 12:35:36 · 180 阅读 · 1 评论 -
设计模式(十七)迭代器模式
迭代器模式(Iterator)提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露改对象的内部表示,类图来源https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=971311629,3818362496&fm=26&gp=0.jpg迭代器模式其实因为java中可以用List来进行遍历,《大话设计模式》中用...原创 2018-11-13 12:11:21 · 125 阅读 · 0 评论 -
设计模式(十六)组合模式
组合模式:将对象组合成树形结构表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象使用具有一致性public abstract class Component { protected String name; public Component(String name) { this.name = name; } publi...原创 2018-11-13 11:31:51 · 127 阅读 · 0 评论 -
设计模式(五)模板方法模式
模板方法模式:定义一个操作中的 算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法 的结构即可重定义该算法的某些特定步骤用途:当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详尽的层次上的思想可能不同时我们通常考虑用模板方法模式来处理。模板方法模式的类图: public abstract class AbstractClass { ...原创 2018-10-11 20:09:22 · 148 阅读 · 0 评论 -
设计模式(一)单例模式
单例模式就是只能在类外实例化一个对象为了保证在类外实例化一个对象,需要做到1.构造方法私有化,2.提供一个方法的接口,为了在类外调用这个方法,必须把该方法设置成静态的(如果不设置为静态的,则需要创建对象去调用这个方法,显然私有化构造函数不能创建对象)单例的优点和缺点:优点:减少内存创建开销[减少频繁创建和销毁实例的开销]缺点:没有接口不能实现单例的实现方式五种:懒汉式,...原创 2018-10-10 19:15:27 · 133 阅读 · 0 评论 -
设计模式番外篇简单工厂模式
简单工厂模式:用一个单独的类来做创造实例的过程。例如加减乘除运算,可以将这些类抽象成一个基类,然后继承,实现自己的功能,如果有其他的类要创建,只需要新建一个类,在创造实例的类中加一种情况。类图:选自《大话设计模式》public abstract class Operation {private double numberA;private double numberB;...原创 2018-10-10 20:43:13 · 109 阅读 · 0 评论 -
设计模式(三)工厂模式
简单工厂模式违反了开放—封闭原则,工厂模式解除了其弊端工厂方法模式,定义一个创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类简单工厂模式用switchcase在一个类中,创建相应的类,工厂模式是为每一个类创建一个实例化该类的类,例如OperationAdd是加法运算类,AddFactory是创建减法运算的类,实现了抽象接口OperationFactory缺点...原创 2018-10-10 22:10:00 · 160 阅读 · 0 评论 -
面向对象设计所需要遵循的六个原则
在面向对象的开发中,主要遵循的有以下6个设计原则:单一职责 ,开放封闭 ,里氏代换,依赖倒转,迪米特法则,合成/聚合复用下面将具体介绍这些设计原则:单一职责原则:就一个类而言,应该仅有一个引起它发生变化的原因如果一个类的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱这个或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当发生变化时,这种高耦合会导致意想不到...原创 2018-10-30 20:39:37 · 2905 阅读 · 0 评论 -
设计模式(六)原型模式
原型模式:用原型实例创建指定对象的种类,并且通过拷贝这些原型创建新的对象要实现创建原型,需要实现cloneable接口,重写clone()方法(基本的原型模式,对象的属性没有引用类型)public class Prototype implements Cloneable { private String name; private int age; pub...原创 2018-10-31 00:27:22 · 282 阅读 · 0 评论 -
设计模式(十二)观察者模式
观察者模式(Observer)又叫做发布订阅模式(Publish/Subscibe)观察者模式定义了一种一对多的依赖关系,让读个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。public abstract class Subject { private List<Observer> observers...原创 2018-11-12 22:18:15 · 134 阅读 · 0 评论 -
设计模式(十三)状态模式
状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类状态模式主要解决的是当控制一个对象的状态转换的条件表达式过于复杂的时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的类判断逻辑化状态模式的类图:public abstract class State { public abstract void Handle(Cont...原创 2018-11-12 22:52:20 · 168 阅读 · 0 评论 -
设计模式(十四)适配器模式
适配器模式:将一个累的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作public class Adaptee { public void specialRequest() { System.out.println("特殊请求"); }}public abstract class ...原创 2018-11-12 23:14:35 · 240 阅读 · 0 评论 -
设计模式(十五)备忘录模式
备忘录模式(Memento):在不破坏封装的前提下,捕获一个对象的内部状态,并在改对象之外保存这个状态,这样以后就可以将该对象恢复到之前保存的状态备忘录模式的类图:http://img4.imgtn.bdimg.com/it/u=135957181,4212772279&fm=26&gp=0.jpg备忘录模式的代码:public class Origi...原创 2018-11-13 10:46:28 · 114 阅读 · 0 评论 -
设计模式(十一)建造者模式
建造者模式:将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不容的表示类图的来源如下:https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=654913270,1692471299&fm=26&gp=0.jpg其中:Builder:是为创建一个Product对象的各个部件制定的抽象接...原创 2018-11-12 16:10:16 · 192 阅读 · 0 评论