1、OO设计基础java
一、封装编程
二、继承编码
三、多态spa
四、抽象设计
2、OO设计原则code
一、找出应用中须要变化之处,让它们独立出来,不要和那些不须要变化的代码混在一处。对象
二、针对接口编程,而不是针对实现编程。继承
针对接口编程,即“针对超类型编程”。针对接口编程,关键就在于多态。利用多态,程序能够针对超类型编程,不会被绑死在超类型的行为上。接口
示例:有一个抽象类Animal,有两个具体的实现(Dog与Cat)继承Animal。get
针对实现编程:
Dog d = new Dog(); d.bark();
针对接口/超类型编程:
Animal a = new Dog(); a.makeSound();
更进一步,子类实例化的动做再也不须要在代码中硬编码,而是在运行时才指定具体的对象:
a = getAnimal(); a.makeSound();
三、多用组合,少用继承。
四、为了交互对象之间的松耦合设计而努力。
五、开放-关闭原则:类应该对扩展开放,对修改关闭。
应用该原则时,应该把注意力集中在设计中最有可能改变的地方,而后应用开放-关闭原则。
六、依赖倒置原则
要依赖抽象,不要依赖具体类。
这个原则看上去很像“针对接口编程,而不是针对实现编程”,然而这里更强调抽象。这个原则说明了:不能让高层组件依赖低层组件,并且无论是高层仍是低层组件,二者都应该依赖于抽象。所谓“高层”组件,是由其余低层组件定义其行为的类。例如,PizzaStore是个高层组件,由于它的行为是由比萨定义的:Pizza建立全部不一样的比萨对象,准备、烘烤、切片、装盒;而比萨自己属于低层组件。
下面的指导方针,能帮助咱们避免在OO设计中违反依赖倒置原则:
1⃣️ 变量不能够持有具体类的引用。若是使用new,就会持有具体类的引用。你能够改用工厂来避开这样的作法。
2⃣️ 不要让类派生自具体类。若是派生自具体类,就会依赖具体类。请派生自一个抽象(接口或抽象类)。
3⃣️ 不要覆盖基类中已实现的方法。若是覆盖基类已实现的方法,那么你的基类就不是一个真正适合被继承的抽象。基类中已实现的方法,应该由全部的子类共享。
咱们应该尽可能达到这个原则,而不是随时都要遵循这个原则。咱们都很清楚,任何Java成勋都有违反这些指导方针的地方。
七、"最少知识" 原则
定义:最少知识原则:只和你的密友谈话。
原则初衷:但愿咱们在设计中,不要让太多的类耦合在一块儿,省得修改系统中的一部分,会影响到其余部分。
该原则提供了一些方针:
就职何对象而言,在该对象的方法内,咱们只应该调用属于如下范围的方法:1⃣️ 该对象自己 2⃣️ 被看成方法的参数而传递进来的对象 3⃣️ 此方法所建立或实例化的任何对象 4⃣️ 对象的任 何组件
//未采用该原则 public float getTemp() { Thermometer thermometer = station.getThermometer(); return thermometer.getTemperature(); }
//采用该原则 public float getTemp() { return station.getTemperature(); }