文章目錄
- demo1
- demo2
- demo3
解釋
設計模式(1)--單一職責原則 代碼示範
demo1
public class SingleResponsibility {
public static void main(String[] args) {
Vehicle vehicle = new Vehicle();
vehicle.run("機車");
vehicle.run("汽車");
vehicle.run("飛機");
}
}
/**
* 方式1
* 這些寫的問題:
* 在方式1中,違反了單一原則
* 解決方式:
* 根據交通工具運作方法不同,分解成不同的類即可。
*/
class Vehicle {
public void run(String vehicle){
System.out.println(vehicle + " 在公路上運作...");
}
}
demo2
public class SingleResponsibility2 {
public static void main(String[] args) {
RoadVehicle roadVehicle = new RoadVehicle();
roadVehicle.run("機車");
AirVehicle airVehicle = new AirVehicle();
airVehicle.run("飛機");
WaterVehicle waterVehicle = new WaterVehicle();
waterVehicle.run("船");
}
}
/**
* 方案2:的分析
* //1.遵守單一職責原則
* //2.但是這樣的改動很大,即将類分解,同時修改用戶端
* //3.直接修改vehicle類,改動的代碼比較少 = > 方案三
*/
class RoadVehicle {
public void run(String vehicle) {
System.out.println(vehicle + "在公路運作");
}
}
class AirVehicle {
public void run(String vehicle) {
System.out.println(vehicle + "在天上運作");
}
}
class WaterVehicle {
public void run(String vehicle) {
System.out.println(vehicle + "在水上運作");
}
}
demo3
public class SingleResponsibility3 {
public static void main(String[] args) {
Vehicle2 vehicle2 = new Vehicle2();
vehicle2.run("汽車");
vehicle2.runAir("飛機");
vehicle2.runWater("輪船");
}
}
/**
* 方案三:
* 1.這種修改方法沒有對原來的類做大的修改,隻是增加方法
* 2. 這裡雖然沒有在類上沒有遵守單一職責原則,但是在方法上,仍然遵守單一職責原則
*/
class Vehicle2 {
public void run(String vehicle){
System.out.println(vehicle + " 在公路上運作...");
}
public void runAir(String vehicle){
System.out.println(vehicle + " 在天空運作...");
}
public void runWater(String vehicle){
System.out.println(vehicle + " 在水中運作...");
}
}
總結