1. 程式人生 > 其它 >設計模式七大原則之單一職責

設計模式七大原則之單一職責

技術標籤:設計模式

設計模式:其實就是程式設計師在程式設計時,應當遵守的原則,也是各種設計模式的基礎
目的:編寫軟體過程中,程式設計師會面臨著來自耦合性,內聚性以及可維護性,可擴充套件性,可重用性,靈活性等方面的挑戰,設計模式為了讓程式具有
程式碼重用性
可讀性
可擴充套件性
可靠性
使程式呈現高內聚,低耦合的特性

設計模式常用的七大原則有:
單一職責原則
介面隔離原則
依賴倒轉原則
里氏替換原則
開閉原則
迪米特法則
合成複用原則

單一職責原則
對類來說,即一個類應該負責一項職責。
如類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+"在天上跑");
		}	
}