五大设计原则 SOLID

发布于:2022-12-28 ⋅ 阅读:(483) ⋅ 点赞:(0)

目录

1、单一职责原则

2、开闭原则

3、里式替换原则

4、接口隔离原则

5、依赖倒置原则


1、单一职责原则

如果一个类承担的职责过多,就等于把这些职责耦合在一起了。一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当发生变化时,设计会遭受到意想不到的破坏。而如果想要避免这种现象的发生,就要尽可能的遵守单一职责原则。此原则的核心就是解耦和增强内聚性

总结:让代码高内聚,低耦合。

2、开闭原则

对原有的功能关闭,对扩展的功能打开

⼩结:有了开闭原则,⾯向需求的变化就能进⾏快速的调整实现功能,这⼤⼤提⾼系统的灵活性,可重⽤性和可维护性,但会增加⼀定的复杂性。

3、里式替换原则

在不影响程序正确性的基础上,所有使用基类的地方都可以使用父类代替。

错误案例:

 

public Class Test{

    class Bird{
        public abstract void fly();
    }

    // 鸵鸟类
    class TuoNiao extends Bird{
        @Override
        public void fly{
            System.out.println("I can not flying");
        }
    }
}

违反了里式替换原则。程序中的对象应该可以被其子类实例替换掉,虽然说他语法没用错误,但是显示生活中,鸵鸟是不会飞的!

总结:里式替换原则的目的就是要保证程序继承关系的正确性,所有⼦类的⾏为功能必须和使⽤者对其⽗类的期望保持⼀ 致,如果⼦类达不到这⼀点,那么必然违反⾥⽒替换原则。

4、接口隔离原则

定义:类不应该依赖自己不需要的接口。因为如果接口有很多的抽象方法,子类只需要实现一个方法,其他的方法只能控制,这样看代码会显得很臃肿。

使用多个特定的细分的接口比单一的总接口要好。不能强迫类去实现它不需要实现的接口。

总结:接口的隔离原则主要功能就是控制粒度的大小,防止暴露给客户不相关的代码和方法,保证接口的内聚,低耦合。

5、依赖倒置原则

定义:

  • 高层模块不应该直接依赖与底层模块。
  • 抽象不应该直接依赖细节,细节应该依赖抽象。(细节指的是实现类)

依赖置换原则代码案例展示

简介:此原则符合了SOILD原则

需求:员工使用不同的工具做出不同的功能

1、编写接口

public interface Tools {
    /**
     * 修理
     */
    void repair();
}

2、编写扳手实现类

public class Wrench implement Tools{
    @Override
    public void repair() {
        System.out.println("扳手开始修理!");
    }
}

3、编写测试实现类

public class Pliers implements Tools{
    @Override
    public void repair() {
        System.out.println("钳子开始修理!");
    }
}

4、编写高层模块

public class Worker(){
    public void repair(Tools tools){
        tools.repair();
    }
}

5、此处有两种写法

5-1第一种写法

public class Main{
    public static void main(String[] args){
        // 创建工人类
        Worker worker = new Worker();
        // 创建接口的实现类 (多态创建)
        Tools tools = new Wrench();
        // 调用工人休息 编译看右边,运行看左边
        tools.repair();
    }
}

5-2 第二种写法 优化第一种写法 事情分开做

添加一个spring-properties 文件

beanName:com.nf.dip.Pliers

添加一个BeanFactory类

public class BeanFactory{
    public static<T> T getBean(String key){
        String className = getStringName(key);
        return (T) Class.forName(className).getConstrouctor().newInstance();
    }

    // 返回配置文件的 class 类路径名
    private String getStringName(String key){
        // 创建配置文件用来保存空配置文件
        Properties pro = new Properties();
        // 通过类加载器读取配置文件添加到Properties文件中
        pro.load(Main.class.getClassLoader().getResourceAsStream("spring-properties"));
        // 通过pro.getProperty() 方法来获取配置文件信息 并返回
        return pro.getProperty();
    }
}

添加测试类

public class Main{
    public static void main(String[] agrs){
        // 通过工厂创建bean对象
        Tools tools = BeanFactory.getBean("beanName");
        // 创建工人对象
        Worker worker = new Worker();
        // 调用工人修理的方法
        worker.repair(tools);
    }
}

依赖倒置原则总结:

        依赖倒置原则,可以减少类之间的耦合性,提高系统的稳定性。提高代码的可读性维护性。同时依赖倒置原则也是设计框架的核心思想。


网站公告

今日签到

点亮在社区的每一天
去签到