![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
BZeHong
这个作者很懒,什么都没留下…
展开
-
设计模式笔记————代理模式
代理模式:为其它对象提供一种代理以控制对这个对象的访问。 Subject 类,定义了 RealSubject 和 Proxy 的公共接口,这样就在任何使用 RealSubject 的地方都可以使用 Proxy。 interface Subject { public void Request(); } RealSubject 类,定义 Proxy 所代表的真实实体。 class Real...原创 2019-03-05 16:05:27 · 250 阅读 · 0 评论 -
设计模式笔记————备忘录模式
备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先的状态。 Originator(发起者):需要被保存的对象,createMemento负责创建一个备忘录以保存当前内部状态;setStateByMemento 负责通过备忘录恢复内部状态。 public class Originator { private Strin...原创 2019-03-11 16:19:50 · 266 阅读 · 0 评论 -
设计模式笔记————组合模式
组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 Compoent 为组合中的对象声明接口,在适当情况下,实现所有类共有接口的默认行为。并声明一个接口用于访问和管理Compoent的子部件。 public abstract class Component { private String name; public S...原创 2019-03-11 19:33:23 · 183 阅读 · 0 评论 -
设计模式笔记————单例模式
单例模式:保证一个类只有一个实例,并提供一个方法访问它的全局访问点。 Singleton类,定义一个 getInstance 方法,允许客户访问它的唯一实例。getInstance 是一个静态方法,主要负责创建自己的唯一实例。 public class Singleton { private static Singleton instance; private Singleton() ...原创 2019-03-12 13:29:53 · 317 阅读 · 0 评论 -
设计模式笔记————六大设计原则
文章目录单一职责原则开放-封闭原则 单一职责原则 单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。 如果有多于一个动机去改变一个类,那么这个类就具有多于一个职责。 软件设计的重要内容就是发现职责,并把那些职责相互分离,降低耦合。 开放-封闭原则 开放-封闭原则:软件实体(类、模块、函数等)应该可以扩展,但是不可修改。 两个特性: 对于扩展是开放的 对于更改是封闭的 当更改的变化发生时...原创 2019-03-12 15:25:04 · 178 阅读 · 0 评论 -
设计模式笔记————桥接模式
桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立地变化。 Implementor类 public abstract class Implementor { public abstract void Operation(); } ConcreteImplementor派生类 public class ConcreteImplmentorA extends Implementor...原创 2019-03-12 18:11:16 · 194 阅读 · 0 评论 -
设计模式笔记————命令模式
命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 Receiver类(具体真正执行请求的类),知道如何实施与执行一个与请求相关的操作,任何类都可能作为一个接收者。 public class Receiver { public void runA() { System.out.println("执行请求A");...原创 2019-03-12 19:46:36 · 188 阅读 · 0 评论 -
设计模式笔记————职责链模式
职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 Handler类,定义一个处理请求的接口。 public abstract class Handler { protected Handler handler; public Handler(Handler handler) {...原创 2019-03-13 17:21:42 · 167 阅读 · 0 评论 -
设计模式笔记————中介者模式
中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式的相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 Mediator类,抽象中介者类,如果不存在扩展情况,可以将Mediator与ConcreteMediator合二为一。 public abstract class Mediator { public abstract void send(Strin...原创 2019-03-13 19:12:04 · 192 阅读 · 0 评论 -
设计模式笔记————适配器模式
将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的类可以一起工作。 Target(用户所希望使用的接口,但不符合当前需求): public class Target { public void request() { System.out.println("不符合需求的方法"); } } Adaptee(需要适配的类,符合当前的需求): public...原创 2019-04-11 09:19:23 · 165 阅读 · 0 评论 -
设计模式笔记————状态模式
状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类 State类,封装context特定状态相关行为 public interface State { public void Handle(Context context); } Context类,维护一个实现State类的实例,并定义当前状态 public class Context { privat...原创 2019-03-11 12:32:09 · 222 阅读 · 0 评论 -
设计模式笔记————观察者模式
观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 Subject类,抽象通知者,一般用一个抽象类或者一个接口实现。它把所有对观察者对象的引用保存在一个聚集里,每个主题都可以有任何数量的观察者。 public abstract class Subject { private Lis...原创 2019-03-07 19:56:50 · 214 阅读 · 0 评论 -
设计模式笔记————工厂方法模式
工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 对比简单工厂模式,工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现 Product 类,选择判断的问题还是存在,只不过工厂方法把简单工厂的内部逻辑判断移到了客户端代码进行。符合开放-封闭原则。 ...原创 2019-03-05 17:11:23 · 253 阅读 · 0 评论 -
设计模式笔记————原型模式
原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 java 可以通过实现 Cloneable 接口重写 clone 方法来实现原型模式。 原型模式不用重新初始化对象,而是动态的获得对象运行时的状态,隐藏了对象创建的细节,对性能大大提高。 clone 方法复制的过程是这样的,如果字段是值类型的,则对该字段执行逐位复制,如果字段是引用类型,则复制引用但不复制引用的对象,因...原创 2019-03-05 20:37:18 · 232 阅读 · 0 评论 -
设计模式笔记————模板方法模式
模板方法模式:定义一个操作中的算法的框架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 模板方法模式有两个角色: AbstractClass 抽象模板:定义并实现了一个模板方法。这个模板方法一般是一个具体方法,给出了一个顶级逻辑的骨架,而逻辑的组成步骤在相应的抽象操作中,推迟到子类实现。 ConcreteClass 具体实现类:实现父类所...原创 2019-03-06 12:48:05 · 220 阅读 · 0 评论 -
设计模式笔记————外观模式
外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 外观模式结构图 四个子系统类: public class SubSystemOne { public void MethodOne() { System.out.println("子系统方法一"); } } public class SubSystemTwo { ...原创 2019-03-06 13:44:22 · 256 阅读 · 0 评论 -
设计模式笔记————建造者模式
建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 客户端只需指定需要建造的类型,具体建造的过程由建造者类(Director)完成。 建造者模式结构图: 建造者模式主要用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。由于指挥者隐藏了该产品是如何组装的,所以若需要改变一个产品的内部表示,只需要再定义一个...原创 2019-03-06 16:38:42 · 256 阅读 · 0 评论 -
设计模式笔记————简单工厂模式和策略模式
简单工厂模式 在创建对象时,通过传入的参数的值决定要实例化的对象。 示例:实现加减运算 //父类 public class Operation { private double numberA = 0; private double numberB = 0; private double result = 0; public double getNumberA() { retu...原创 2019-03-04 11:01:39 · 419 阅读 · 0 评论 -
设计模式笔记————享元模式
享元模式:运用共享技术有效地支持大量细粒度的对象 Flyweight类,它是所有具体享元类的父类。 public abstract class Flyweight { public abstract void Operation(int extrinsicstate); } ConcreteFlyweight类,具体需要共享的类 public class ConcreteFlyweig...原创 2019-03-14 14:18:30 · 201 阅读 · 0 评论 -
设计模式笔记————装饰模式
装饰模式:动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。它属于对象结构型模式。 装饰模式有四个角色: 抽象构件(Component)角色:定义一个抽象接口以规范准备接收附加责任的对象。 具体构件(Concrete Component)角色:实现抽象构件,通过装饰角色为其添加职责。 抽象装饰(Decorate)角色:继承抽象构件,并包含具体构件的实例,可以通过其子...原创 2019-03-04 20:11:59 · 293 阅读 · 0 评论 -
设计模式笔记————访问者模式
访问者模式:表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 Visitor类,为该对象结构中ConcreteVisitor的每一个类声明一个Visit操作。访问者接口为使用不同算法的子类声明访问操作。 public abstract class Visitor { public abstract void visitConcre...原创 2019-03-14 19:32:50 · 422 阅读 · 1 评论 -
设计模式笔记————23种模式总结
23种设计模式分为三种类别:创建型模式、结构型模式、行为型模式 创建型模式 抽象工厂模式:提供一个创建一系列或相关依赖对象的接口,而不需指定它们具体的类 建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪个类,工厂模式使一个类的实例化延迟到其子类 原型模式:用原型实例指定创建对象的种类,并且通过拷贝这...原创 2019-04-11 15:05:24 · 727 阅读 · 0 评论