设计原则:
1. 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起
2. 针对接口编程,而不是针对实现编程
3. 多用组合,少用继承。
4. 为了交互对象之间的松耦合而努力
5. 类应该对扩展开放,对修改关闭
6. 要依赖抽象,不依赖具体类
策略模式:定义了算法族,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
观察者模式:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,他的所有依赖者都会收到通知并自动更新。
装饰者模式:动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。
工厂模式:定义了一个创建对象的借口,但由子类决定实例化的类是哪一个,工厂方法让类把实例化推迟到子类
抽象工厂模式:提供一个接口,用于创建或依赖对象的家族,而不需要明确指定具体类。
比较工厂方法和抽象工厂:(用抽象工厂来定义具体工厂的抽象,而由具体工厂来创建对象”,用抽象造车工厂来定义具体造车工厂的抽象,而由具体的造车工厂来创建汽车,这就是抽象工厂与工厂方法的不同,工厂方法中对象的创建是由工厂方法来确定的,创建的对象都是不分类并且实现一个接口的,而抽象工厂就是在工厂方法的基础上对创建车的对象的行为进行分类,比如北京车厂,上海车厂等。)