欢迎访问我的博客:http://wangnan.tech
单例模式
定义
确保一个类只有一个实例,并提供全局访问点
要点
- 单例模式也提供访问这个实例的全局点
- 在java中实现单例模式需要私有的构造器,一个静态方法和一个静态变量
- 确定在性能和资源上的限制,然后小心地选择适当的方案来实现单例模式,以解决多线程问题
- 小心,如果使用多个类加载器,可能导致单件失效而产生多个实例
- 如果使用jvm1 2或之前的版本,你必须建立单例注册表,以免垃圾收集器将单例回收
命令模式
定义
将请求封装成对象,这可以让你使用不用的请求,队列,或者日志请求来参数化其他对象,命令模式也可以支持撤销操作
要点
- 命令模式将发出请求的对象和执行请求的对象解耦
- 在被解耦的两者之间是通过命令对象进行沟通的,命令对象封装了接受者和一个或一组动作
- 调用者通过调用命令对象的execute()发出请求,这会使得接收者的动作被调用
- 调用者可以接受命令当做参数甚至在运行时动态的进行
- 命令可以支持撤销,做法是实现一个undo方法来来回到execute()地执行的状态
- 宏命令是命令的一种简单的延伸,允许调用多个命令,宏方法也可以支持注销
- 实际操作时,很常见用“聪明”命令模式,就是直接实现了请求,而不是将工作委托给接收者
- 命令模式也可以用来实现日志和实务系统
适配器模式/外观模式
适配器模式定义
将一个类的接口,转换成客户期望另一个接口,适配器让原来不兼容的类可以工作无间
外观模式定义
提供一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用
get到的oo原则
只和朋友交谈
要点
- 当需要使用一个现有的类而其接口并不符合你的需要时,就使用适配器
- 当需要简化并统一一个很大的接口或者一群复杂的接口时,使用外观模式
- 适配器改变接口以符合客户的期望
- 外观将客户从一个复杂的子系统中解耦
- 实现一个适配器可能需要一番功夫,也可能不费功夫,视目标接口的大小和复杂度而定
- 实现一个外观,需要将子系统组合进外观中,然后将工作委托给子系统执行
- 适配器模式有两种形式:对象适配器和类适配器,类适配器需要用到多重继承
- 你可以为一个子系统实现一个以上的外观
- 适配器将一个对象包装起来以改变其接口,装饰者将一个对象包装起来以增加新的行为和责任,而外观将一群对象包装起来以简化其接口
网友评论