随笔分类 - 设计模式
摘要:原型模式,即Prototype,是指创建新对象的时候,根据现有的一个原型来创建。 1. 原型模式 原型模式(Prototype)比较类似于复制粘贴的思想,它可以首先创建一个实例,然后通过这个实例进行新对象的创建。在 Java 中,最典型的就是 Object 类的 clone 方法。 但编码中这个方法
阅读全文
摘要:本章有工厂方法和抽象工厂设计模式 工厂方法 工厂方法 定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。 工厂方法的目的是使得创建对象和使用对象是分离的 工厂接口,工厂接口中带有静态方法返回真正的子类 public interface Nu
阅读全文
摘要:迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。 迭代器模式(Iterator)实际上在Java的集合类中已经广泛使用了。我们以List为例,要遍历ArrayList,即使我们知道它的内部存储了一个Object[]数组,也不应该直接使用数组索引去遍历,因为这样
阅读全文
摘要:享元(Flyweight)的核心思想很简单:如果一个对象实例一经创建就不可变,那么反复创建相同的实例就没有必要,直接向调用方返回一个共享的实例就行,这样即节省内存,又可以减少创建对象的过程,提高运行速度。 享元模式在Java标准库中有很多应用。我们知道,包装类型如Byte、Integer都是不变类,
阅读全文
摘要:前言 责任链模式使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 request → 处理器1 → 处理器2 → 处理器3 → 返回结果 比如财务审批系统,组长可以审批一千元,部门经理审批一千到一万元的,
阅读全文
摘要:前言 本节复习结构型设计模式中的外观模式。外观模式也称门面模式。 外观模式的定义:外观模式提供了一个统一的接口,用来访问子系统红的一群接口。外观定义了一个高层接口,让子系统更容易使用。 代码实现 // 子系统 Phone 提供在手机上买火车票的接口 public class Phone { publ
阅读全文
摘要:前言 本节学习结构型中的适配器模式。 适配器模式将一个类的接口,转换成客户期望的另一个接口。 适配器类似我们生活中将安卓充电头转化为苹果充电头的转化器一样。适配另一方的功能,使得两方能亲密无间的合作。 代码实现 关键:适配器实现目标接口,并持有适配者的实例。 代码实现将 "一只鸡" 适配成 "一只鸭
阅读全文
摘要:前言 生活中我们从牛奶厂家订阅了牛奶后,会有快递员在每天早晨给所有订阅牛奶的家庭送牛奶来。如果我们退订了之后,我们之后也不会收到牛奶。观察者模式就类似这样的一个场景,可以把牛奶场景定义为主题,客户理解为观察者。 除了主题主动的"推送"数据给观察者,观察者能否从主题中主动的 "拉取" 数据呢,事实上也
阅读全文
摘要:前言 本节从装饰者模式到Java 里的 IO。装饰者模式能够在不修改任何底层类代码的情况下,给你的(或别人的) 对象赋予新的职责。属于结构型设计模式。符合开闭原则,但是会产生更多的类,提高程序复杂性。 代码实现 UML 角色:抽象的实体类,确定的实体类。抽象的装饰者,确定的装饰者。 Java I/O
阅读全文
摘要:前言 单例模式确保一个类只有一个实例,并提供一个全局访问点。 单例模式用于系统中创建的对象保证单一。单例模式很好理解,保证在系统中一个对象只实例化一次,但是在实现上有多种方式。 1. UML 2. 实现方式 实现上比较关键的是我们需要将构造函数访问属性设置成私有private。那么外部就不可以随便的
阅读全文
摘要:前言 本文介绍一下结构型模式中的模板方法。 模板模式是什么 定义一个操作的一系列步骤,对于某些暂时确定不下来的步骤,就留给子类去实现好了,这样不同的子类就可以定义出不同的步骤。通过继承的方式来实现模板 ,完成对父类的填充。 UML 代码案例 钩子的用途: + 让子类更加灵活的实现逻辑,控制模板方法中
阅读全文
摘要:前言 本文聊聊 行为型模式中的策略模式。策略模式就是定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。策略模式使得算法可独立于使用它的客户而变化。 UML 代码案例 源码中的应用 JDK中Arrays.sort(T[] a, Comparator c)这个排序方法,它在内部实现了TimS
阅读全文
摘要:前言 Spring AOP 就是通过代理模式来实现切面编程的。代理模式用来为其他对象提供一种代理,以控制对这个对象的访问。 代理对象在客户端和目标对象之间起到中介的作用。通过控制对这个对象的访问,可以做一些自己想做的事。比如在AOP中,方法调用前打印请求方的信息,结束时记录用时,便于后续分析。还可以
阅读全文

浙公网安备 33010602011771号