随笔分类 -  设计模式

<<设计模式之美>>阅读笔记。
摘要:22-中介模式 1.中介模式总结 <<设计模式:可复用面向对象软件的基础>>对中介模式的定义:中介模式定义了一个单独的(中介)对象来封装一组对象之间的交互;将这组对象之间的交互委派给与中介对象交互来避免对象之间的直接交互。 中介模式通过引入中间层,来将一组对象之间的交互关系(或者成为依赖关系)从多对 阅读全文
posted @ 2022-11-27 08:57 行稳致远方 编辑
摘要:21-解释器模式 1.解释器模式 不使用解释器模式实现简单的加减乘除。 public class ExpressionInterpreter { private final Deque<Long> numbers = new LinkedList<>(); public long interpret 阅读全文
posted @ 2022-11-27 08:56 行稳致远方 编辑
摘要:19-备忘录模式 1.备忘录模式 没有使用备忘录模式实现数据的显示、追加和撤销操作,存在的问题:InputText中定义了setText()函数,该函数可能被其他业务误用;快照本身是不能修改的,但是InputText中定义了一些列修改内部状态的函数,违反了封闭原则。 // 服务端代码 public 阅读全文
posted @ 2022-11-27 08:56 行稳致远方 编辑
摘要:20-命令模式 1.命令模式 命令模式服务端。 // 事件对象,不同的事件对象对应不同的命令。 public class Event { public static final Event GOT_DIAMOND = new Event(); public static final Event GO 阅读全文
posted @ 2022-11-27 08:56 行稳致远方 编辑
摘要:18-访问者模式 1.访问者模式 访问者模式基础代码,该代码主要实现的功能是:从PPT、Pdf和Word中提取文字;存在的问题是:违反了开闭原则,当需要添加压缩功能时,即根据不同的文件类型,使用不同的压缩算法来压缩文件(压缩PPT、Pdf和Word文件)。 public class Extracto 阅读全文
posted @ 2022-11-27 08:55 行稳致远方 编辑
摘要:17-迭代器模式 1.迭代器模式 迭代器模式服务端 public interface Iterator<E> { boolean hasNext(); E next(); } public class ArrayIterator<E> implements Iterator<E> { private 阅读全文
posted @ 2022-11-27 08:55 行稳致远方 编辑
摘要:16-状态模式 1.分支判断法实现状态机 public enum State { SMALL(0), SUPER(1), FIRE(2), CAPE(3); private final int value; private State(int value) { this.value = value; 阅读全文
posted @ 2022-11-27 08:54 行稳致远方 编辑
摘要:15-职责链模式 1.职责链模式 职责链模式服务端。 public interface IHandler { boolean handler(); } public class HandlerA implements IHandler { @Override public boolean handl 阅读全文
posted @ 2022-11-27 08:54 行稳致远方 编辑
摘要:14-策略模式 1.策略模式 策略模式服务端。 // 订单 public class Order { // 订单价格 private double orderPrice; // 订单类型 private String orderType; public Order(double orderPrice 阅读全文
posted @ 2022-11-27 08:53 行稳致远方 编辑
摘要:13-模板方法模式 1.模板方法模式 public abstract class AbstractClass { public final void templateMethod() { method01(); method02(); } public abstract void method01( 阅读全文
posted @ 2022-11-27 08:52 行稳致远方 编辑
摘要:12.观察者模式 1.观察者模式 服务端代码。 public interface Subject { void registerObserver(Observer observer); void removeObserver(Observer observer); void notifyObserv 阅读全文
posted @ 2022-11-27 08:51 行稳致远方 编辑
摘要:11-享元模式 1.享元模式 传统的方式实现棋牌游戏,传统的方式可能会消耗较大的内存。 // 棋子类 public class ChessPiece { private int id; private String text; private Color color; private int pos 阅读全文
posted @ 2022-11-27 08:51 行稳致远方 编辑
摘要:10-组合模式 1.使用组合模式实现一个文件系统 文件系统服务端。 public abstract class FileSystemNode { protected String path; public FileSystemNode(String path) { this.path = path; 阅读全文
posted @ 2022-11-27 08:50 行稳致远方 编辑
摘要:09-门面模式 01.门面模式 public class UserController { public void a() { System.out.println("== a =="); } public void b() { System.out.println("== b =="); } } 阅读全文
posted @ 2022-11-27 08:50 行稳致远方 编辑
摘要:08-桥接模式 1.桥接模式 /** * 桥接模式可以将M*N的继承关系简化为M+N中组合关系。 * 如汽车Car的天窗SunProof有M中选择,轮毂Hub有N中选择, * 如果使用继承则需要M*N中继承关系,但是通过组合可以简化为M+N中组合关系。 */ public class Car { p 阅读全文
posted @ 2022-11-27 08:49 行稳致远方 编辑
摘要:07-适配器模式 1.类适配器-基于继承 // 对外接口 public interface ITarget { void f1(); void f2(); } // 内部接口 public class Adaptee { public void fa() { System.out.println(" 阅读全文
posted @ 2022-11-27 08:49 行稳致远方 编辑
摘要:06-装饰器模式 1.装饰器模式 public interface IPersonService { void getName(String name); } public class PersonService implements IPersonService { @Override publi 阅读全文
posted @ 2022-11-27 08:48 行稳致远方 编辑
摘要:05-代理模式 01.基于接口实现代理模式 性能统计代码和业务代码在一起存在的问题。 /** * 如下在登录代码中收集性能数据存在两个问题: * 1 性能统计代码侵入业务代码。 * 2 性能统计的代码与业务代码无关,业务代码最好只聚焦业务处理。 */ public class UserControl 阅读全文
posted @ 2022-11-27 08:47 行稳致远方 编辑
摘要:04-原型模式 1.原型模式 当对象的创建成本比较大,而同一个类的不同对象之间的差别不大(大部分字段都是相同的),就可以利用对已有对象(原型)进行复制(或者成为拷贝)的方法来创建新对象,以达到节省创建时间的目的。这种基于原型创建对象的方式成为原型设计模式。 当对象的创建耗时很多,对象中的数据需要经过 阅读全文
posted @ 2022-11-27 08:47 行稳致远方 编辑
摘要:03-建造者模式 1.未使用建造者模式创建对象 未使用建造者模式创建对象存在的问题。 将name必填项放入构造函数中,如果必填项过多就会导致构造函数参数列表过长。如果不把必填项放入构造函数中,而是通过setter方法进行设置,那么必填项是否已经填写的校验逻辑就无处安放了。 假设配置项之间有一定的约束 阅读全文
posted @ 2022-11-25 11:56 行稳致远方 编辑

点击右上角即可分享
微信分享提示