随笔分类 - Java_设计模式
摘要:1、本质: 封装请求2、定义: 把一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作3、核心: 原本“行为请求者”和“行为执行者”是紧紧耦合的,但是在某些应用(如:记录、撤销、事物等)中,这种紧耦合是无法适应的。 所以,将这个“行为...
阅读全文
摘要:1、本质:触发联动2、定义: 定义对象间的一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新 例如:报社的报纸出版时,通知所有的订阅者3、示意图: 4、特点: 1、目标与观察值之间的关系 --一对多关系 2、单向依赖 ...
阅读全文
摘要:1、本质:控制对象访问2、使用示例: 1、当需要从数据库获取某公司所有人员信息时 2、每一位人员有很多字段,比如几百上千个 3、如果全部获取出来,将消耗特别多的内存 4、解决基本思路:只需要返回用户编号和用户姓名等基本信息,再次使用时,可以根据编号再去数据库获取 ...
阅读全文
摘要:1、本质:封装交互2、使用环境: 1、一个对象的操作会引起其他相关对象的变化 2、这个对象不希望自己处理这些关系 3、交给中介者处理3、示意图: 4、功能: 1、把对象之间的交互关系集中处理 2、松散对象之间的交互耦合5、简化中介者模式: --广...
阅读全文
摘要:1、本质:克隆生成对象2、定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象3、与new的区别: new的对象实例只有默认值 克隆的对象拥有和被克隆对象完全相同的值4、Java中本身提供的克隆方法: 1、被克隆类实现Cloneable接口 2、被克隆类中添加c...
阅读全文
摘要:1、本质:分离整体构建算法和部分构造2、示意图: 3、功能: 构建复杂的产品,而且是细化的、分步骤的构建产品 分离构建算法和具体的构建实现 具体的构造实现可以方便的切换和扩展4、优点: 1、松散耦合 2、可以很容易的改变产品的内部表示 3、更好的复用性
阅读全文
摘要:1、本质:选择产品簇的实现2、示意图: 3、功能: 1、仍然是工厂,所以主要功能仍然是生产产品 2、不再是创建单个对象,而是为一系列相关对象或相互依赖的对象创建一个接口 3、抽象工厂其实就是一个产品系列,或产品簇4、优点: 1、分离接口和实现 2、可以轻松切换产品簇5、缺点: 1、不太容易扩展新的产品 2、容易造成类层次复杂
阅读全文
摘要:1、本质:延迟到子类来选择实现2、示意图: 3、主要功能: 让父类在不知道具体实现的情况下,完成自身功能的调用 类似于注入4、备注: 1、工厂方法中,通常父类是一个抽象类,里面包含创建对象的抽象工厂方法。 2、可以通过参数等形式控制创建不同的产品对象5、优点: 1、可以在不知道具体实现的情况下编程 --依赖于抽象 2、更容易扩展对象的新版本 3、连接平行的类层次6、缺点: 1、具体产品对象和工厂方法耦合
阅读全文
摘要:1、本质:控制实例数目2、核心: 1、构造方法私有 2、类内部保存一个唯一引用 3、提供一个获取类引用对象的静态方法3、分类: 1、懒汉式 --第一次使用时,创建实例对象 1 public class Singleton{ 2 private static Singleton instance = null; 3 private Singleton(){} 4 public static synchronized Singleton getInstance(){ 5 if(instance == null){ ...
阅读全文
摘要:1、转换匹配,复用功能2、示意图: 3、模式理解: 1、适配器模式的意义: a、使旧的瓶子能够装新酒 b、用户只知道酒,而不知道用的是新瓶子还是旧瓶子 2、被适配对象(Adaptee)可以和目标接口(Target)完全没有关联 3、适配器的实现:对象组合 4、一个Adapter可以适配多个Adaptee4、扩展: 1、智能适配器:在适配器中实现功能 2、双向适配器:不仅把Adaptee适配成Target,还把Target适配成Adaptee5、优点: 1、更好的复用性 --复用旧的酒瓶子 2、更好的扩展性 ...
阅读全文
摘要:1、本质:封装交互,简化调用2、示意图: 3、优点: 1、松散耦合 --隔离了客户端和子系统,子系统更容易扩展和维护 2、简单易用 --客户端不需要与众多子系统打交道,只需认识外观即可 3、更好的划分访问层次 --可以选择性的暴露和隐藏子系统 4、体现了“最少知识原则”4、缺点: 过多的Facade容易让人迷惑
阅读全文
摘要:1、本质:选择实现2、示意图: 3、加强型: 1、可配置的简单工厂 --通过参数或配置文件,选择实现类4、优点: 1、帮助封装,面向接口编程 2、解耦 --客户端与具体实现类之间的解耦5、缺点: 1、增加客户端的复杂度 2、不方便扩展子工厂
阅读全文

浙公网安备 33010602011771号