六大设计原则-概念

文章介绍了Java设计模式中的六大设计原则,包括单一职责原则(一个类应只有一个变化原因)、开闭原则(对扩展开放,对修改封闭)、里氏替换原则(子类可替换父类而不影响程序)、迪米特法则(减少类之间的耦合)、接口隔离原则(接口应专注于提供必要的方法)以及依赖倒置原则(依赖于抽象而非具体实现)。通过实例解释了这些原则的含义和应用。
摘要由CSDN通过智能技术生成

重学Java设计模式

学习方式:设计模式可以理解为是前辈们的经验,所以单独靠理论的看书是不行的,必须实际联系,一步步优化代码才能学好。

六大设计原则

单一职责原则

一个类应该只有一个发生变化的原因

通俗理解:

  • 职责:就是指类变化的原因,也就是业务需求
  • 一个class只负责一个事情

开闭原则

软件中的 对象、类、模块和函数 对 扩展 开放,对修改封闭

书例:

求圆形面积,π值的精度如果在父类写死,后面需求变化,要求更精确,这时可以让子类继承父类,直接在子类中修改父类的π值

public class CalculationArea implements ICalculationArea {
    private static final double pi = 3.14d;
    
    @Override
    public double circular(double r) {
        return pi * r * r;
    }
}
---------------------------------------------------------------
public class CalculationAreaExt extends CalculationArea {
    private static final double pi = 3.141592653d;
    
    @Override
    public double circular(double r) {
        return pi * r * r;
    }
}

通俗理解:不去修改原来封闭的父类代码,直接给他做扩展

里氏替换原则

如果S是T的子类型,那么所有T类型的对象都可以在不破坏程序的情况下被S类型的对象替换。

通俗理解:能放父类对象的位置,都能直接改成放子类对象

迪米特法则

又叫最少知道原则,是指一个对象类对于其他对象类来说,知道得越少越好。也就是说,两个类之间不要有过多的耦合关系,保持最少关联性。

书例:

校长要知道班级的总分、平均分,不应该在校长类中写这些接口,而应该将班级的分数交给老师管理

接口隔离原则

客户端不应该被迫依赖于它不使用的方法;一个类对另一个类的依赖应该建立在最小的接口上

书例:英雄的每个技能都当作一个接口,这样hero类在实现这些接口时就可以自己选择。比如下面例子就应该把ISkill接口拆分成三个接口,然后让HeroA实现两个接口

public class HeroA implements ISkill {
    @Override
    public void doArchery() {
        System.out.println("A的射箭技能");
    }
    
    @Override
    public void doSilent() {
        System.out.println("A的沉默技能")
    }
    
    @Override
    public void doVertigo() {
        // 无此技能的实现
    }
}

依赖倒置原则

高层模块不应该依赖于底层模块,二者都应该依赖于抽象;

抽象不应该依赖于细节,细节应该依赖于抽象;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值