Java設計模式中的單一責任原則詳解
更新時間:2023年11月09日 11:17:28 作者:一只小熊貓呀
這篇文章主要介紹了Java設計模式中的單一責任原則詳解,應該有且僅有一個原因引起類的變更,即單一指責原則要求一個借口或類只有一個原因引起變化,也就是一個接口或類只有一個職責,它就負責一件事情,需要的朋友可以參考下
1、基本介紹
對類來說,即一個類應該只負責一項職責。
如類A負責兩個不同職責:職責1,職責2。當職責1需求變更而改變A時,可能造成職責2執(zhí)行錯誤,所以需要將類A的粒度分為A1,A2
2、應用實例
2.1未遵循單一責任原則
在方式1的run方法中,飛機在公路上運行。明顯違反了單一責任原則
package com.weirdo.principle.singleResponsibility;
public class SingleResponsibility1 {
public static void main(String[] args) {
Vehicle vehicle = new Vehicle();
vehicle.run("摩托車");
vehicle.run("汽車");
vehicle.run("飛機");
}
//交通工具類
static class Vehicle{
public void run(String vehicle){
System.out.println(vehicle+"在公路上運行...");
}
}
}
2.2遵循單一責任原則(類級)
遵守單一責任原則。
但是這樣做改動很大,即將類分寫,同時需要修改客戶端。
package com.weirdo.singleResponsibility;
public class SingleResponsibility2 {
public static void main(String[] args) {
RoadVehicle roadVehicle = new RoadVehicle();
roadVehicle.run("摩托車");
roadVehicle.run("汽車");
AirVehicle airVehicle = new AirVehicle();
airVehicle.run("飛機");
}
static class RoadVehicle {
public void run(String vehicle) {
System.out.println(vehicle + "在公路上運行...");
}
}
static class AirVehicle {
public void run(String vehicle) {
System.out.println(vehicle + "在天上上運行...");
}
}
}
2.3遵循單一責任原則(方法級)
這種修改方法沒有對原來的類做大的修改,只是增加方法。
然沒有在類這個級別上遵守單一責任原則,但是在方法級別上仍然是遵守單一責任
package com.weirdo.singleResponsibility;
public class SingleResponsibility3 {
public static void main(String[] args) {
Vehicle vehicle = new Vehicle();
vehicle.runAir("飛機");
vehicle.runRoad("汽車");
vehicle.runWater("航母");
}
static class Vehicle {
public void runRoad(String vehicle) {
System.out.println(vehicle + "在公路上運行...");
}
public void runAir(String vehicle) {
System.out.println(vehicle + "在公路上運行...");
}
public void runWater(String vehicle) {
System.out.println(vehicle + "在水里運行...");
}
}
}
3、注意事項
- 降低類的復雜都,一個類只負責一項職責
- 提高類的可讀性,可維護性
- 通常情況下,應該遵守單一責任原則。只有邏輯足夠簡單,才可以在代碼級違反單一責任原則:只有類中方法數(shù)量足夠少??梢栽诜椒墑e保持單一責任原則
到此這篇關于Java設計模式中的單一責任原則詳解的文章就介紹到這了,更多相關Java單一責任原則內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot+jpa配置如何根據(jù)實體類自動創(chuàng)建表
這篇文章主要介紹了SpringBoot+jpa配置如何根據(jù)實體類自動創(chuàng)建表,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11
Jasypt的StandardPBEByteEncryptor使用源碼解析
這篇文章主要介紹了Jasypt的StandardPBEByteEncryptor使用源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-09-09

