一.设计模式_七大原则以及简单UML入门

UML及设计模式概述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上为UML入门


七大原则:

1.开闭原则

以下为设计模式七大原则
这里贴上老师gitee的代码:wy_yyds

代码实现:github

不要修改原有代码,如果需要改变原有代码则可以使用extend继承原有方法再复写父类方法,new的时候向上转型即可。
在这里插入图片描述
在这里插入图片描述
代码类图:

在这里插入图片描述

2.依赖倒置原则

代码实现:github

依赖倒置原则:(面相接口编程)高低层模块之间不应相互依赖,应当都依赖于一个公有的接口,如此这般可以无限新增兄弟模块来实现公有接口中的方法,并且在调用某个兄弟模块的方法时可直接调用公有接口方法即可。(即例如controller想调用service层方法时可以直接调用Iservice中的方法而不用去管理它的实现类serviceImpl中究竟有几个实现了此方法,只需要传给接口你想要的实现对象再调用Iservice的方法即可)

在这里插入图片描述
在这里插入图片描述

代码类图:

在这里插入图片描述

在这里插入图片描述

3.单一职责原则

代码实现:github

单一职责原则(主要约束的是实现的细节):确保一个模块只负责一个需求的一类功能实现。例如课程管理与课程内容功能在单一职责原则下应该分为两个接口,实现的话可以是一个类同时实现两个接口,也可以分别实现这两个接口,这样可以使程序更加清晰。
在这里插入图片描述
如下的设计在项目中不可避免,但我们应该尽量的建立两个实现类分别实现这两个接口
在这里插入图片描述

4.接口隔离原则

代码实现:github

接口隔离原则(主要约束的是抽象接口的构建):按此原则设计的抽象接口应把一个臃肿的接口中的各个方法细分,分为多个接口。但要注意适度原则不要太多或太少。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此种方式不符合接口隔离原则,具体见代码
在这里插入图片描述

在这里插入图片描述

5.迪米特法则

代码实现:github

迪米特法则(最少知道原则):强调每个类都要减少对其他类的依赖。例如当controller想要查询有多少个订单时要调用select方法,就不要在controller里将查询出来的order对象封装成一个list再获得数量,而应该在service层里封装完毕后只将order数量多少交给controller。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
下面的这种方式不符合demeter
在这里插入图片描述
这种符合demeter发展
在这里插入图片描述

6.里式替换原则

懒癌发作,我都写在代码了
代码实现:github

对于一个被多继承的父类中的已经实现的方法,如果子类对这些已经实现的方法进行修改,就可能会对整个继承体系造成破坏,所以里氏替换原则要求在子类中尽量不要重写父类的方法,且在适当的情况下,可以通过聚合,组合,依赖来解决问题。
如果非要重写父类方法时,子类对象要能够完全替换父类对象,而程序逻辑不变。即:子类可以扩展父类的功能,但尽量不要改变父类原有的功能。里氏替换原则就是为了约束泛滥的继承方式

7.合成聚合(复用)原则

懒癌发作,我都写在代码了
代码实现:github

尽量使用合成/聚合的方式,而不是使用继承,因为继承总是会使两个类的联系更加紧密,不符合设计思想

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值