发现职责并把职责分离,就一个类而言,应该仅有单一职责,这就是单一职责原则精神。
尽可能早的创建抽象隔离变化,面对需求,对程序的改动是通过增加新代码进行的,而不是改动现有代码这就是开放封闭原则精神所在。
里氏代换原则就是子类型必须能够替换掉他们的父类型,而程序的行为没有变化。
依赖倒转原则两点:1.高层模块不应该依赖底层模块,它们都依赖于抽象。2.抽象不应该依赖细节,细节应该依赖抽象。依赖倒转是面向对象设计的标志,如果编写时考虑的都是如何针对抽象编程而不是针对细节编程,程序中所有的依赖关系都是终止于抽象类或者接口,那就是面向对象设计,反之即过程化设计。
迪米特法则,如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用,如果其中一个类需要调用另一个类的某一个方法的话,通过第三方转发这个调用。其根本思想是强调了类之间的松耦合,类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改不会对有关系的类造成波及。
只要在分析过程中听到需要在不同时间应用不同的业务规则,就可以考虑使用策略模式处理这种变化的可能性。
装饰模式考虑应用场景是当需要执行特殊行为,客户代码在运行时需要根据要求有选择的按顺序使用装饰功能包装对象时。
代理模式应用在四种场合:
1.远程代理,为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实,比如WebService在.NET中的应用。
2.虚拟代理,根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象。比如浏览器优化图片下载。
3.安全代理,用来控制真实对象访问时的权限,