学习韩老师设计模式

设计模式常用的七大原则有:

  1. 单一职责原则
  2. 接口隔离原则
  3. 依赖倒转原则
  4. 里氏替换原则
  5. 开闭原则 ocp
  6. 迪米特法则
  7. 合成复用原则

单一原则

package com.principle.singleresponsibility;

import com.sun.prism.shader.Solid_TextureYV12_AlphaTest_Loader;

/**
 * @ClassName:SingleResponsibility1
 * @Package:com.principle.singleresponsibility
 * @Description:
 * @Company: byd </p>
 * @Author lFF
 * @Creat:2023/6/19--10:33
 * @Copyright: Copyright (c) 2023  </p>
 * @Version 1.0.0
 */
public class SingleResponsibility1 {
    
    
    public static void main(String[] args){
    
    
        Vehicle vehicle = new Vehicle();
        vehicle.run("潜艇");
        vehicle.run("汽车");
        vehicle.run("飞机");
    }

}
// 交通工具类
// 方式1
// 1. 在方式1 的run方法中,违反了单一职责原则
// 2. 解决的方案非常的简单,根据交通工具运行方法不同,分解成不同类即可
class Vehicle {
    
    
    public void run(String vehicle) {
    
    
        System.out.println(vehicle + " 在公路上运行....");
    }
}
package com.principle.singleresponsibility;

/**
 * @ClassName:SingleResponsibility2
 * @Package:com.principle.singleresponsibility
 * @Description:
 * @Company: byd </p>
 * @Author lFF
 * @Creat:2023/6/19--10:46
 * @Copyright: Copyright (c) 2023  </p>
 * @Version 1.0.0
 */
public class SingleResponsibility2 {
    
    
    public static void main(String[] args){
    
    
        // TODO Auto-generated method stub
        RoadVehicle roadVehicle = new RoadVehicle();
        roadVehicle.run("摩托车");
        roadVehicle.run("汽车");

        AirVehicle airVehicle = new AirVehicle();

        airVehicle.run("飞机");
    }
}
//方案2的分析
//1. 遵守单一职责原则
//2. 但是这样做的改动很大,即将类分解,同时修改客户端
//3. 改进:直接修改Vehicle 类,改动的代码会比较少=>方案3

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 + "水中运行");
 }
}

package com.principle.singleresponsibility;

/**
 * @ClassName:SingleResponsibility3
 * @Package:com.principle.singleresponsibility
 * @Description:
 * @Company: byd </p>
 * @Author lFF
 * @Creat:2023/6/19--10:50
 * @Copyright: Copyright (c) 2023  </p>
 * @Version 1.0.0
 */
public class SingleResponsibility3 {
    
    
public static void main(String[] args){
    
    
    Vehicle2 vehicle2 = new Vehicle2();
    vehicle2.run("摩托车");
    vehicle2.runAir("飞机");
    vehicle2.runWater("潜艇");
}

}
//方式3的分析
//1. 这种修改方法没有对原来的类做大的修改,只是增加方法
//2. 这里虽然没有在类这个级别上遵守单一职责原则,但是在方法级别上,仍然是遵守单一职责
class  Vehicle2 {
    
    
    public void run(String vehicle) {
    
    
        //处理

        System.out.println(vehicle + " 在公路上运行....");

    }
    public void runAir(String vechicle){
    
    
        System.out.println(vechicle + "在空中飞翔");
    }

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

猜你喜欢

转载自blog.csdn.net/liufeifeihuawei/article/details/131283285