七大原则一--->单一职责原则

单一职责原则

      即一个类应该只负责一项职责

单 一职责原 则 注意事项和细节
1) 降低类的复杂度,一个类只负责一项职责。
2) 提高类的可读性,可维护性
3) 降低变更引起的风险
4) 通常情况下, 我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违
反单一职责原则;只有类中方法数量足够少,可以在方法级别保持单一职责原则

 

出现违背单一原则的情况  run方法违背了单一职责原则 不同交通工具应该有不同的运行

package com.wf.zhang.singleresponsibility;

/**
 * 设计模式七大原则           单一职责原则 类级别  一个类负责一个职责
 * 
 * @author wf.zhang
 * 
 *         出现问题===>类出现违背单一职责原则
 */
public class SingleResponseibility1 {

    public static void main(String[] args) {

        Vehicle v = new Vehicle();
        v.run("汽车");
        v.run("轮船");
        v.run("飞机");
    }

}

/**
 * 交通工具类
 * 
 * @author wf.zhang
 *
 */
class Vehicle {
    public void run(String vehicle) {
        System.out.println(vehicle + "在公路上运行...");
    }
}
View Code

 

 解决一   定义多个类 成本高

package com.wf.zhang.singleresponsibility;

/**
 * 解决 1 定义单独的类 (类分解) 使用不同类的的方法 实现不同需求
 * 
 * @author wf.zhang
 *
 */
public class SingleResponseibility2 {

    public static void main(String[] args) {

        RoadVehicle roadVehicle = new RoadVehicle();
        roadVehicle.run("汽车");
        WaterVehicle waterVehicle = new WaterVehicle();
        waterVehicle.run("轮船");
        SkyVehicle skyVehicle = new SkyVehicle();
        skyVehicle.run("飞机");
    }

}

/**
 * 交通工具类
 * 
 * @author wf.zhang
 *
 */
class RoadVehicle {
    public void run(String vehicle) {
        System.out.println(vehicle + "在公路上运行...");
    }
}

class WaterVehicle {
    public void run(String vehicle) {
        System.out.println(vehicle + "在水路上运行...");
    }
}

class SkyVehicle {
    public void run(String vehicle) {
        System.out.println(vehicle + "在天空上运行...");
    }
}

 

 解决二   (推荐)

package com.wf.zhang.singleresponsibility;

/**
 * 解决 2    类 (方法分解) 定义不同方法
 * 
 *       类遵守单一原则    方法没有遵守单一原则
 * @author wf.zhang
 */
public class SingleResponseibility3 {

    public static void main(String[] args) {

        CommonVehicle commonVehicle = new CommonVehicle();
        commonVehicle.run("汽车");
        commonVehicle.runWater("轮船");
        commonVehicle.runSky("飞机");
    }

}

/**
 * 交通工具类
 * 
 * @author wf.zhang
 *
 */
class CommonVehicle {
    public void run(String vehicle) {
        System.out.println(vehicle + "在公路上运行...");
    }

    public void runWater(String vehicle) {
        System.out.println(vehicle + "在水路上运行...");
    }

    public void runSky(String vehicle) {
        System.out.println(vehicle + "在天空上运行...");
    }
}

 

posted @ 2020-02-10 17:39  wf.zhang  阅读(161)  评论(0编辑  收藏  举报