设计模式-迪米特原则、开闭原则

来源:互联网 发布:上海达内java教育地址 编辑:程序博客网 时间:2024/05/18 02:43

迪米特原则

一个对象应该对其他对象有最少的了解。 通俗地讲, 一个类应该对自己需要耦合或调用的类知道得最少, 你( 被耦合或调用的类) 的内部是如何复杂都和我没关系, 那是你的事情, 我就知道你提供的这么多public方法, 我就调用这么多, 其他的我一概不关心。

1. 只和朋友交流

每个对象都必然会与其他对象有耦合关系, 两个对象之间的耦合就成为朋友关系

2. 朋友间也是有距离的

一个类公开的public属性或方法越多, 修改时涉及的面也就越大, 变更引起的风险扩散也就越大。 因此, 为了保持朋友类间的距离, 在设计时需要反复衡量: 是否还可以再减少public方法和属性, 是否可以修改为private、 package-private( 包类型, 在类、 方法、 变量前不加访问权限, 则默认为包类型) 、 protected等访问权限, 是否可以加上final关键字等。

3. 是自己的就是自己的

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

在实际应用中, 如果一个类跳转两次以上才能访问到另一个类, 就需要想办法进行重构了, 为什么是两次以上呢? 因为一个系统的成功不仅仅是一个标准或是原则就能够决定的, 有非常多的外在因素决定, 跳转次数越多, 系统越复杂, 维护就越困难, 所以只要跳转不超过两次都是可以忍受的, 这需要具体问题具体分析。

开闭原则

一个软件实体如类、 模块和函数应该对扩展开放, 对修改关闭。

一个软件产品只要在生命期内, 都会发生变化, 既然变化是一个既定的事实, 我们就应该在设计时尽量适应这些变化, 以提高项目的稳定性和灵活性, 真正实现“拥抱变化”。 开闭则告诉我们应尽量通过扩展软件实体的行为来实现变化, 而不是通过修改已有的代码来完成变化, 它是为软件实体的未来事件而制定的对现行开发设计进行约束的一个原则。

0 0