设计原则:
开闭原则:
用例对象和提供抽象功能进行分割,用例不变,抽象功能被实现,用于不断的扩展,于是源代码不需要进行修改,只在原有基础上进行抽象功能的实现从而进行代码扩展。不变源于代码,扩展功能
里氏代换原则:
- 继承父类,尽量不重写父类方法,
- 即父类可以出现的地方,子类必须也可以放入,并且不会出现问题
- 子类可以实现父类的抽象方法,但是不能覆盖父类的非抽象方法。
- 子类中可以增加自己特有的方法。
- 当子类覆盖或实现父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
- 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。
依赖倒置原则(更进一步的开闭原则):
- 都和抽象类发生关系,不和实现类这种具体的东西发生关系
- 依赖关系不应是具体类,应当是抽象类,即当前创建实例时,应该父指向子的创建方式,多态
- 高层模块不应该依赖低层模块,两者都应该依赖其抽象
- 抽象不应该依赖细节
- 细节应该依赖抽象
摘自: 依赖倒置原则
接口隔离原则:
- 将一个对象的多个职能分隔开来,职能作为对象存在,被调用时可以因地制宜
- 其实,这样也有一个弊端,接口太细致,接口数据会过于繁杂
迪米特原则:
只和朋友交流:只知道另一个类,至于另一个类具体是干嘛的,不需要知道
只与类中的成员变量对象,方法中的形参(当创建一个对象类型的参数),类的方法中所创建的对象发生关系
合成复用原则:
多解耦,不要写死