模式: 在某种情境瞎,针对某问题的解决方案。(重复出现的问题和可复用的解决方案)
能不用设计模式解决问题就不用设计模式。
##设计原则
- 最少知识原则。
- 使用设计模式时需要看具体的情况而定,能用设计原则解决的问题就不用模式,不要为了使用模式而使用模式。
- 封装变化。
- 多用组合,少用继承。
- 针对接口编程,不针对实现编程。
- 为交互对象之间的松耦合而努力。
- 类应该对扩展开放对修改关闭。
- 依赖抽象,不要依赖具体类。
- 之和朋友交谈。
- 不要找我,我会找你。
- 类应该只有一个改变的理由。
###策略模式
定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户.
###观察者设计模式
定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖这都会收到通知并自动更新.
###装饰者模式
动态地将责任附加到对象上.想要扩展功能,装饰者提供有别于继承的另一种选择.
InputStream in = new BufferedInputStream(new FileInputStream(file));//
###工厂方法模式
定义了一个创建对象的接口,但由子类决定要实例化的是哪一个.工厂方法让类把实例化推迟到子类.
###命令模式
将请求封装成对象,这可以让你使用不同的请求,队列或者日志请求来参数化其他对象.命令模式也可以支持撤销操作.
###适配器模式
实现看似不可能做到的事情.
将两个本来不兼容的模块可以在一起正常工作.
###代理模式
为另一个对象提供一个替身或者站位符一访问这个对象。以便控制客户对对象的访问。