深入浅出设计模式 --郭峰 看完的时候,发现很多(设计模式)与(面向对象的设计的原则,抽象类和接口)息息相关,总结以助记忆。
面向对象的设计原则:
1.单一职责原则(SRP,Single Responsibility Principle):系统中每一个对象都应该只有一个单独的职责,而所有对象所关注的就是自身职责的完成。每个类应该只有一个职责,对外只能提供一种功能,而引起类变化的原因应该只有一个。
2.开闭原则(OCP, Open for Extension,Closed for Modification Principle):一个对象对扩展开发,对修改关闭。
3.依赖注入原则(DIP,Dependence Inversion Principle):要依赖于抽象,不要依赖于具体的实现。面向接口编程。
4.里氏替换原则(LSP,Liskov Substitution Principle):意思是在任何抽象类出现的地方都可以用它的实现类来替代。可以更好的使用继承。
5.迪米特原则(LOD,Law of Demeter):一个对象应该应该对其他对象尽可能少的了解,从而能够降低各个对象之间的耦合,提高系统的可维护性。各模块相互调用时,通常都会提供一个统一的接口来实现。
6.接口分离原则(ISP,Interface Segregaion Principle):意思是不应该强迫客户程序依赖他们不需要的使用的方法。可以参考适配器理解。
7.优先使用组合而不是继承原则(CARP,Composite/Aggregate Reuse Principle):如标题
抽象类和接口:
抽象类:
有抽象方法的必须是抽象类,抽象类可以没有抽象方法(一些类为了防止被实例化,可以在类名前添加abstract),可以有方法的实现。
类名前加abstract;
抽象类里面的成员变量可以被不同的修饰符修饰;
与实现是is-a关系;
抽象方法前不能加private,final;抽象方法为的就是让别的类实现。
接口:
类名前加interface;
方法必须全部是抽象方法,且没有实现。方法前默认的public abstract可以省略,在抽象类里面不可以省略;
接口里面的变量必须是public static final;
与实现是like-a关系;
一个类只能继承一个抽象类,可以实现多个接口;接口可以实现多个接口(public Interface1 extends Interface2,Interface3{})。