Table of Contents

  1. 单例模式
    1. 定义
    2. 要点
  2. 命令模式
    1. 定义
    2. 要点
  3. 适配器模式/外观模式
    1. 适配器模式定义
    2. 外观模式定义
    3. get到的oo原则
    4. 要点

单例模式

定义

确保一个类只有一个实例,并提供全局访问点

要点

  • 单例模式也提供访问这个实例的全局点
  • 在java中实现单例模式需要私有的构造器,一个静态方法和一个静态变量
  • 确定在性能和资源上的限制,然后小心地选择适当的方案来实现单例模式,以解决多线程问题
  • 小心,如果使用多个类加载器,可能导致单件失效而产生多个实例
  • 如果使用jvm1 2或之前的版本,你必须建立单例注册表,以免垃圾收集器将单例回收

命令模式

定义

将请求封装成对象,这可以让你使用不用的请求,队列,或者日志请求来参数化其他对象,命令模式也可以支持撤销操作

要点

  • 命令模式将发出请求的对象和执行请求的对象解耦
  • 在被解耦的两者之间是通过命令对象进行沟通的,命令对象封装了接受者和一个或一组动作
  • 调用者通过调用命令对象的execute()发出请求,这会使得接收者的动作被调用
  • 调用者可以接受命令当做参数甚至在运行时动态的进行
  • 命令可以支持撤销,做法是实现一个undo方法来来回到execute()地执行的状态
  • 宏命令是命令的一种简单的延伸,允许调用多个命令,宏方法也可以支持注销
  • 实际操作时,很常见用“聪明”命令模式,就是直接实现了请求,而不是将工作委托给接收者
  • 命令模式也可以用来实现日志和实务系统

适配器模式/外观模式

适配器模式定义

将一个类的接口,转换成客户期望另一个接口,适配器让原来不兼容的类可以工作无间

外观模式定义

提供一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用

get到的oo原则

只和朋友交谈

要点

  • 当需要使用一个现有的类而其接口并不符合你的需要时,就使用适配器
  • 当需要简化并统一一个很大的接口或者一群复杂的接口时,使用外观模式
  • 适配器改变接口以符合客户的期望
  • 外观将客户从一个复杂的子系统中解耦
  • 实现一个适配器可能需要一番功夫,也可能不费功夫,视目标接口的大小和复杂度而定
  • 实现一个外观,需要将子系统组合进外观中,然后将工作委托给子系统执行
  • 适配器模式有两种形式:对象适配器和类适配器,类适配器需要用到多重继承
  • 你可以为一个子系统实现一个以上的外观
  • 适配器将一个对象包装起来以改变其接口,装饰者将一个对象包装起来以增加新的行为和责任,而外观将一群对象包装起来以简化其接口