六大设计原则

六大设计原则


课程目标

  • 学习理解六大设计原则

知识要点

1.单一职责原则(Single Responsibility Principle)


	定义:单一模块,单一方法;一个类或者模块只负责完成一个职责。

在这里插入图片描述


2.里氏替换原则(Liskov Substitution Principle)


定义:多用组合,少用继承
理解:子类会继承父类的方法,但是继承是为了实现代码重用,也就是为了共享方法,那么共享的父类方法就应该保持不
变,不能被子类重新定义。而如果需要重新定义共享的方法,最好是在子类里面新增一个方法进行扩展。
这种情况最好使用组合去实现,组合类似与spring的依赖注入的概念@Autowired。自己先实现一个方法类,
注入原先需要继承的类,然后可以直接调用这个需要共享的方法,还可以在新实现类里面进行扩展方法。
public interface ExtendOrderService {
    /**
     * 获取订单信息
     * @return
     */
    String getOrderInfo();
}
/**
 * 本地订单
 */
public class OrderServiceImpl implements OrderService{
    @Override
    public int saveOrder() {
        System.out.println("下单成功,订单号: 888888");
        return 888888;
    }
}
/**
 * 海外订单
 */
public class OutOrderServiceImpl implements OrderService {
    @Override
    public int saveOrder() {
        System.out.println("下单成功,订单号: 66666666");
        return 66666666;
    }
}
public class ExtendOrderServiceImpl extends OrderServiceImpl implements ExtendOrderService{
    @Autowired
    private OrderService orderService;

    @Override
    public int saveOrder() {  //重写父类的保存订单功能
        System.out.println("下单成功,订单号: 1231321323");
        return 0;
    }

    /**
     * 获取订单信息
     * @return
     */
    @Override
    public String getOrderInfo() {  //实现自己的扩展功能
       System.out.println("我是扩展订单信息");
       return null;
    }

    @Test
    public void test(){
        super.saveOrder(); //下单成功,订单号: 888888
        this.saveOrder(); //下单成功,订单号: 1231321323
        orderService=new OutOrderServiceImpl();
        orderService.saveOrder(); //下单成功,订单号: 66666666
        this.getOrderInfo();  //我是扩展订单信息
    }
}

3.依赖倒置原则(Dependence Inversion Principle)


定义:下层模块引入上层模块的依赖,改变原有自上而下的依赖方向
在这里插入图片描述
正常自上而下依赖当我们数据库表字段改变时,可能涉及修改整领域的代码。当从DO层开始倒置依赖entity实体层时,数据库表字段改变我们只需要改对应的实体即可。

4.接口隔离原则(Interface Segregation Principle)

定义:建立单一接口,不要建立臃肿庞大的接口。接口尽量细化,同时接口中的方法尽量少。
理解:
	① 接口要尽量小
			不要违反单一职责原则。
			要适度的小,要适度。
	② 接口要高内聚
		提高接口、类、模块的处理能力,减少对外的交互。
	③ 定制服务
		通过对高质量接口的组装,实现服务的定制化
注意:我理解接口隔离原则是针对接口来说的,而单一职责原则是针对方法/类。

5.迪米特法则/最少知识原则(Law of Demeter)


定义:只对自己需要耦合或调用的类知道得最少。
理解::一个类应该对自己需要耦合或调用的类知道得最少,你(被耦合或调用的类)的内部是如何复杂,那是你的事儿,
和我没关系,我就知道你提供的这么多public方法,我就调用这么多,其他的我一概不关心。

在这里插入图片描述


6.开闭原则(Open Closed Principle)


定义:类、方法、模块应该对扩展开放,对修改关闭。
理解:添加一个功能应该是在已有的代码基础上进行扩展,而不是修改已有的代码
注意:这个原则也是需要区分真实业务场景来思考的,例如你只是一个外围系统,新需求需要在原有功能上修改逻辑,那
你可以去新增一个接口,保证原接口的安全,也可以修改原接口逻辑,因为外围系统是需要考虑人力成本以及时间的,再
加上外围系统都是自己内部使用,安全性比较高。如果你是核心系统,那你最好新增一个接口,而不去动原来的接口,
因为你永远也不知道这个接口被外部哪个系统调用,如果遗漏一个系统就是生产事故!!!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值