外观模式
提供一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统使用
提供简化的接口,没有封装接口
迭代器模式
提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示
状态模式
允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。
客户端对状态对象不了解
装饰者模式
装饰者和被装饰者必须是同一种类型
动态地将责任附加到对象上,想扩展功能,装饰者提供有别于继承的另一种选择
工厂模式
工厂方法
让类的实例化推迟到了子类
定义了一个创建对象的接口,由子类决定要实例化是哪一个
设计原则
依赖倒置原则
依赖抽象,不要依赖具体类
避免违反原则
变量不可以持有具体类的引用
不要让类派生自具体类
不要覆盖基类中已实现的方法
已实现的方法应该所有子类共享
最少知识原则
只和你的密友谈话
不要让太多的类耦合在一起,免得修改系统的一部分,影响其他部分
好莱坞法则
设置钩子
钩子是一种方法,在抽象类中不做事情,或者只做初始化
别打电话给我们,我们会打电话给你
命令模式
将请求封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象
demo:遥控器