设计模式
金箍一梦何来愁
远方的姑娘再见
展开
-
23种设计模式 单例 (整理摘抄优秀的博文) 记住
https://github.com/yzmaodeng/java-keypointknowledge/commit/0894a14b03b724cd362f466e8f20514efbc164aa 最喜欢的两种 (足够应付工作) 静态内部类public class Singleton { private static class SingletonHolder...原创 2018-06-03 14:40:06 · 201 阅读 · 0 评论 -
23种设计模式 解释器模式
解释器模式定义:给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。类型:行为类模式类图:解释器模式是一个比较少用的模式,本人之前也没有用过这个模式。下面我们就来一起看一下解释器模式。解释器模式的结构抽象解释器:声明一个所有具体表达式都要实现的抽象接口(或者抽象类),接口中主要是一个interpret()方法,称为解释操作。具体解释任务由它的各个实现类来完成...原创 2018-06-07 19:11:01 · 161 阅读 · 0 评论 -
23种设计模式 备忘录模式
备忘录模式定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态类型:行为类类图:我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状态。比如,我们使用Eclipse进行编程时,假如编写失误(例如不小心误删除了几行代码),我们希望返回删除前的状态,便可以使用Ctrl+Z来进行返回。这时我们便可以使用备忘录模式...原创 2018-06-07 19:10:14 · 154 阅读 · 0 评论 -
23种设计模式 迭代器设计模式
迭代器模式定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。类型:行为类模式类图:使用迭代器模式,我们可以自己定义接口,但是在JDK中已经有定义好的迭代器接口,可以满足大部分的使用场景:public interface Iterator<E> { boolean hasNext(); E next(); default void remo...原创 2018-06-07 17:03:53 · 1263 阅读 · 0 评论 -
23种设计模式 策略模式
https://github.com/yzmaodeng/java-keypointknowledge/commit/098e2fc49310d5cb09cd8c97d9be1702c85826e7 策略模式的结构封装类:也叫上下文,对策略进行二次封装,目的是避免高层模块对策略的直接调用。 抽象策略:通常情况下为一个接口,当各个实现类中存在着重复的逻辑时,则使用抽象类来封装这部分公共...原创 2018-06-07 15:45:14 · 173 阅读 · 0 评论 -
23种设计模式 责任链模式 记住
责任连模式定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。类型:行为类模式类图: 我们有一个字符串String msg = ":):,<script>,敏感,被就业,网络授课";我们希望应用以下三个规则对字符串进行过滤和谐处理:(1)将字符串中出现的"<...原创 2018-06-07 14:02:12 · 196 阅读 · 0 评论 -
23种设计模式 命令模式
定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。类型:行为类模式类图:命令模式的结构顾名思义,命令模式就是对命令的封装,首先来看一下命令模式类图中的基本结构:Command类:是一个抽象类,类中对需要执行的命令进行声明,一般来说要对外公布一个execute方法用来执行命令。ConcreteCommand类:Comman...原创 2018-06-07 11:46:04 · 241 阅读 · 0 评论 -
23种设计模式 访问者设计模式
访问者模式把数据结构和作用于结构上的操作解耦合,使得操作集合可相对自由地演化。访问者模式适用于数据结构相对稳定算法又易变化的系统。因为访问者模式使得算法操作增加变得容易。若系统数据结构对象易于变化,经常有新的数据对象增加进来,则不适合使用访问者模式。优点扩展性好: 在不修改对象结构中的元素的情况下,为对象结构中的元素添加新的功能。复用性好: 通过访问者来定义整个对象结构通用的功能,从而提高复用程度...原创 2018-06-06 14:58:46 · 213 阅读 · 0 评论 -
23种设计模式 中介设计模式
中介者模式定义:用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。类型:行为类模式类图:中介者模式的结构中介者模式又称为调停者模式,从类图中看,共分为3部分:抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并由子类去实现。中介者实现类:从抽象中介者继承而来,实现抽象...原创 2018-06-06 00:40:21 · 305 阅读 · 0 评论 -
23种设计模式 原型设计模式
原型模式的定义: 原型模式:使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象。原型模式的结构: 原型模式主要包含3个角色: (1)Prototype(抽象原型类):声明克隆方法的接口,是所有具体原型类的公共父类,它可是抽象类也可以是接口,甚至可以是具体实现类。 (2)ConcretePrototype(具体原型类):它实现抽象原型类中声明的克隆方法,在克...原创 2018-06-05 22:36:23 · 716 阅读 · 0 评论 -
使用序列化来实现对象的拷贝
在内存中通过字节流的拷贝是比较容易的,把木对象写入到一个字节流中,再从字节流中毒出来,这样可以创建一个新的对象,且新对象与木对象不存在引用共享的问题,实现的对象的深拷贝 import java.io.*;/** * 在内存中通过字节流的拷贝是比较容易的,把木对象写入到一个字节流中,再从字节流中读出来, * 这样可以创建一个新的对象,且新对象与木对象不存在引用共享的问题,实现的对象的...原创 2018-06-05 10:25:49 · 188 阅读 · 0 评论 -
23种设计模式 建造者模式
建造者模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。类型:创建类模式类图:四个要素产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。抽象建造者:引入抽象建造者的目的,是为了将建造的具...原创 2018-06-04 22:38:25 · 115 阅读 · 0 评论 -
23种设计模式 模板设计模式 记住
https://github.com/yzmaodeng/java-keypointknowledge/commit/5ca13d42fd63932490339a575749aec377d6e642 定义:定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。 事实上,模版方法是编程中一个经常用到的模...原创 2018-06-04 19:30:57 · 173 阅读 · 0 评论 -
设计模式的六大原则 (整理)和分类
1单一职责原则一开始我需要一只会吃吃喝喝的宠物,于是我写了public class Animal { public void eat() { Log.i("", "eat"); } public void drink() { Log.i("", "drink"); }}一个领养的方法public class Host { ...原创 2018-06-04 15:20:32 · 424 阅读 · 0 评论 -
23种设计模式 工厂设计模式 记住
https://github.com/yzmaodeng/java-keypointknowledge/tree/master/src/main/java/com/zl/Designpattern/Factory 1、简单工厂的设计模式、public class ProductFactory {public static <T extends Product> T ...原创 2018-06-03 23:40:36 · 99 阅读 · 0 评论 -
23种设计模式 观察者
jdk里面的设计public interface ObserverA class can implement the Observer interface when it wants to be informed of changes in observable objects当想充当观察者接收被观察者的变更信息时,可以实现观察者接口。public class Observableextends ...原创 2018-06-03 21:15:41 · 133 阅读 · 0 评论