設計模式七大原則之單一職責
阿新 • • 發佈:2021-02-09
技術標籤:設計模式
設計模式:其實就是程式設計師在程式設計時,應當遵守的原則,也是各種設計模式的基礎
目的:編寫軟體過程中,程式設計師會面臨著來自耦合性,內聚性以及可維護性,可擴充套件性,可重用性,靈活性等方面的挑戰,設計模式為了讓程式具有
程式碼重用性
可讀性
可擴充套件性
可靠性
使程式呈現高內聚,低耦合的特性
設計模式常用的七大原則有:
單一職責原則
介面隔離原則
依賴倒轉原則
里氏替換原則
開閉原則
迪米特法則
合成複用原則
單一職責原則
對類來說,即一個類應該負責一項職責。
如類A負責兩個不同的職責,職責1,職責2
當職責1需求變更而改變A時,可能造成職責2執行錯誤,所以要將類A粒度分解為A1 ,A2
package com.yang.single;
public class SingleResponsibility {
public static void main(String[]args) {
Vehicle v=new Vehicle();
v.run("汽車");
v.run("摩托車");
v.run("拖拉機");
}
}
// 在方式1裡的 run方法違反了單一職責原則
2 解決的方案非常簡單,根據交通工具執行方法不同,分解成不同類即可
class Vehicle{
public void run (String vehicle) {
System.out.println(vehicle+"在公路上跑");
}
}
方案二
package com.yang.single;
/**
*遵守單一職責
但是改動很大,即將類分解,同時改動客戶端
*
**/
public class SingleResponsibility {
public static void main(String[]args) {
RoadVehicle v=new RoadVehicle();
v.run("汽車");
AirVehicle a=new AirVehicle ();
a.run("飛機");
}
}
class RoadVehicle{
public void run(String vehicle) {
System.out.println(vehicle+"在公路上跑");
}
}
class AirVehicle{
public void run(String vehicle) {
System.out.println(vehicle+"在天上跑");
}
}
方案三
package com.yang.single;
public class SingleResponsibility {
public static void main(String[]args) {
RoadVehicle v=new RoadVehicle();
v.run("汽車");
v.airRun("飛機");
}
}
class RoadVehicle{
public void run(String vehicle) {
System.out.println(vehicle+"在公路上跑");
}
public void airRun(String vehicle) {
System.out.println(vehicle+"在天上跑");
}
}