java 单一职责原则_设计模式之单一职责原则
對類來說,即一個類應用只負責一項職責,如類A負責兩個不同的職責:職責1,職責2.當職責1需求變更時,可造成職責2執行錯誤,所以需要將類A的粒度分解為A1,A2.
降低類的復雜度,一個類只負責一項職責
提高類的可讀性,可維護性
降低變更引起的風險
通常情況下,我們應該遵守單一職責原則,只在邏輯足夠簡單,才可以在代碼級別違反單一職責原則;只有類中方法數量足夠少時,可以在方法級別保持單一職責原則即可package www.perwrj.principle.SRP;
/**
* 方案一:不遵守單一職責原則
* @author wangruijie
*
*/
public class SingleResponsibilityDemo1 {
public static void main(String[] args) {
Vehicle vehicle = new Vehicle();
vehicle.run("汽車");
vehicle.run("飛機");
vehicle.run("潛艇");
/*
* 汽車在跑
飛機在跑
潛艇在跑
*/
}
}
/**
* 交通工具類
* @author wangruijie
*
*/
class Vehicle{
/**
* run方法中,違反單一職責原則
* 解決方案很簡單,根據交通工具運行的方式不同,分解成不同的類即可
* @param vegicle
*/
public void run(String vegicle) {
System.out.println(vegicle + "在跑");
}
}
package www.perwrj.principle.SRP;
/**
* 方案二:遵守了單一職責原則
* 但這樣花銷很大,要將類分解,同時修改客戶端
* 改進:直接修改Vehicle類
* @author wangruijie
*
*/
public class SingleResponsibilityDemo2 {
public static void main(String[] args) {
RoadVehicle roadVehicle = new RoadVehicle();
roadVehicle.run("汽車");
AirVehicle airVehicle = new AirVehicle();
airVehicle.run("飛機");
WaterVehicle waterVehicle = new WaterVehicle();
waterVehicle.run("潛艇");
}
}
/**
* 地上跑的
* @author wangruijie
*
*/
class RoadVehicle{
public void run(String vehicle) {
// TODO Auto-generated method stub
System.out.println(vehicle + "地上跑的");
}
}
/**
* 天上飛的
* @author wangruijie
*
*/
class AirVehicle{
public void run(String vehicle) {
// TODO Auto-generated method stub
System.out.println(vehicle + "天上飛的");
}
}
/**
* 在水中跑
* @author wangruijie
*
*/
class WaterVehicle{
public void run(String vehicle) {
// TODO Auto-generated method stub
System.out.println(vehicle + "在水中跑");
}
}
package www.perwrj.principle.SRP;
/**
* 方案三
* 這種修改方法沒有對原來類做大的修改,只是增加了方法。
* 沒有在類級別上遵守單一職責原則
* 在方法級別上遵守單一職責原則
* @author wangruijie
*
*/
public class SingleResponsibilityDemo3 {
public static void main(String[] args) {
Vehicle2 vehicle2 = new Vehicle2();
vehicle2.run("汽車");
vehicle2.runAir("飛機");
vehicle2.runWater("潛艇");
}
}
/**
* 交通工具類
* @author wangruijie
*
*/
class Vehicle2{
/**
*
* @param vegicle
*/
public void run(String vegicle) {
System.out.println(vegicle + "在地上跑");
}
public void runAir(String vegicle) {
System.out.println(vegicle + "在天上跑");
}
public void runWater(String vegicle) {
System.out.println(vegicle + "在水里跑");
}
}
內容來源于網絡如有侵權請私信刪除
總結
以上是生活随笔為你收集整理的java 单一职责原则_设计模式之单一职责原则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java jpa saveall方法优化
- 下一篇: 笔记本电脑cpu插槽型号(笔记本电脑cp