Java设计原则

懵懂的女人 提交于 2019-12-09 17:55:05

一、OO设计基础

1、封装

2、继承

3、多态

4、抽象

二、OO设计原则

1、找出应用中需要变化之处,让它们独立出来,不要和那些不需要变化的代码混在一处。

2、针对接口编程,而不是针对实现编程。

针对接口编程,即“针对超类型编程”。针对接口编程,关键就在于多态。利用多态,程序可以针对超类型编程,不会被绑死在超类型的行为上。

示例:有一个抽象类Animal,有两个具体的实现(Dog与Cat)继承Animal。

针对实现编程:

Dog d = new Dog();
d.bark();

针对接口/超类型编程:

Animal a = new Dog();
a.makeSound();

更进一步,子类实例化的动作不再需要在代码中硬编码,而是在运行时才指定具体的对象:

a = getAnimal();
a.makeSound();

3、多用组合,少用继承。

4、为了交互对象之间的松耦合设计而努力。

5、开放-关闭原则:类应该对扩展开放,对修改关闭。

      应用该原则时,应该把注意力集中在设计中最有可能改变的地方,然后应用开放-关闭原则。  

6、依赖倒置原则

      要依赖抽象,不要依赖具体类。

      这个原则看上去很像“针对接口编程,而不是针对实现编程”,然而这里更强调抽象。这个原则说明了:不能让高层组件依赖低层组件,而且不管是高层还是低层组件,两者都应该依赖于抽象。所谓“高层”组件,是由其他低层组件定义其行为的类。例如,PizzaStore是个高层组件,因为它的行为是由比萨定义的:Pizza创建所有不同的比萨对象,准备、烘烤、切片、装盒;而比萨本身属于低层组件。    

       下面的指导方针,能帮助我们避免在OO设计中违反依赖倒置原则:

        1⃣️  变量不可以持有具体类的引用。如果使用new,就会持有具体类的引用。你可以改用工厂来避开这样的做法。

        2⃣️  不要让类派生自具体类。如果派生自具体类,就会依赖具体类。请派生自一个抽象(接口或抽象类)。

        3⃣️  不要覆盖基类中已实现的方法。如果覆盖基类已实现的方法,那么你的基类就不是一个真正适合被继承的抽象。基类中已实现的方法,应该由所有的子类共享。

        我们应该尽量达到这个原则,而不是随时都要遵循这个原则。我们都很清楚,任何Java成勋都有违反这些指导方针的地方。        

7、"最少知识" 原则

        定义:最少知识原则:只和你的密友谈话。

        原则初衷:希望我们在设计中,不要让太多的类耦合在一起,免得修改系统中的一部分,会影响到其他部分。

        该原则提供了一些方针:

                就任何对象而言,在该对象的方法内,我们只应该调用属于以下范围的方法:1⃣️  该对象本身 2⃣️  被当作方法的参数而传递进来的对象 3⃣️  此方法所创建或实例化的任何对象  4⃣️  对象的任          何组件

  //未采用该原则
  public float getTemp() {
    Thermometer thermometer = station.getThermometer();
    return thermometer.getTemperature();
  }
  //采用该原则
  public float getTemp() {
    return station.getTemperature();
  }

 

 

 

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!