附-七大软件设计原则

该文章部分图片来自:慕课网《java设计模式精讲 Debug 方式+内存分析》

七大原则:

开闭原则、依赖倒置原则、单一职责原则

接口隔离原则、迪米特法则、里式替换原则、组合复用原则

 

 

 

 

 

注:

1.高层底层不是UML图中类的高低,而是指在类似于MVC架构中的Service(高),DAO(低)这种

2.通过抽象构建出来的架构一般要比通过细节构建出来的架构要稳定

 

注:

1.这个接口实现了两个大的功能,获取课程信息和课程操作

2.这个接口中存在的问题是:如果课程被退掉之后,就不能够获取课程信息了,因此拆分开来

 

就是说一个接口中方法过多,还能够进一步地细化。这个接口就还能够细化

在拆分之后

这儿就实现了接口间隔离,因为粗粒度是不可拆分的,而细粒度是可以组装的,这就拥有更高的灵活性

 

注:

单一职责和接口隔离原则的区别:

单一职责原则是指类、接口、方法的职责是单一的,强调的是职责,在一个接口中不管有多少方法,只要是同一个职责,那么都是OK的,主要约束的是程序实现细节

接口隔离原则更注重的是接口方法的隔离,主要约束的是框架结构

 

有的时候一个方法放在a类也行,放在b类也行,那么放在哪儿更好呢?

如果一个方法放在某一个类中,既不增加类间关系,也对本类不产生负面影响,那就可以放到本类中

总的来说就是引用的类在能够完成对应功能的条件下越少越好

 

 

注意这儿是重载,而不是重写(Override)!!!因为如果重载的方法入参更严格的话,就会违反里式替换原则,子类不能替换父类,因为程序逻辑发生改变

比如父类中的入参是HashMap,那么当重写这个方法时,子类的入参应当是Map

比如父类有一个返回值为Map的抽象方法,那么子类重写的时候返回值可能需要时HashMap

在日常使用中,确实直接重写父类方法来实现相应功能非常简单,但是在使用多态比较频繁的时候会增加系统出错的风险

 

即前宽后严:

入参更宽松

返回更严格(或相等)

 

 

 

比如在适配器模式中,在选择类适配器和对象适配器的时候,优先选择对象适配器

聚合的关系强度更低,组合的关系强度更高

 

全部评论

相关推荐

HR_丸山彩同学:你的项目描述里,系统设计讲了很多:MemCube是什么、三级存储架构怎么设计、四种遗忘策略分别是什么。这些面试的时候讲没问题,但简历上不需要这么细。 简历要突出的是影响力,不是实现细节。面试官看简历的时候想知道的是「这个项目有多大价值」,不是「这个项目具体怎么实现的」。实现细节是面试时候聊的 怎么改:技术细节可以精简为一句「采用三级存储架构+四种遗忘策略」,把省出来的篇幅用来写影响力。比如:项目有没有开源?有没有写成技术博客?有没有被别人使用过? 校园经历没有任何信息量,任何人都可以写这句话,写了等于没写。更关键的是,你投的是技术岗,校园活动经历本来就不是加分项。如果非要写,必须写出具体的数字和成果。如果你没有这些数字,那就老老实实删掉 「端到端耗时缩减30-40%」要给出确切数字和绝对值。从1000ms降到600ms是降了40%,从100ms降到60ms也是降了40%,但这两个含义完全不一样。其他也是,涉及到数据,准备好证据,口径统一,面试会问 「熟练」「熟悉」「了解」混在一起用,读起来很乱。而且「了解前端需求」最好改成「具备前后端协作经验」
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务