七大设计原则

内聚性:是对一个模块内部各个组成元素之间相互结合的紧密程度的度量指标。模块中组成元素结合的越紧密,模块的内聚性就越高,模块的独立性也就越高。理想的内聚性要求模块的功能符合单一职责。
耦合性:是对模块间关联程度的度量,也叫耦合度,模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差。

设计模式学习

1、单一职责
单一职责原则的核心就是控制类的粒度大小、将对象解耦、提高其内聚性。
降低类的复杂度。一个类只负责一项职责,其逻辑肯定要比负责多项职责简单得多。
提高类的可读性。复杂性降低,自然其可读性会提高。
提高系统的可维护性。可读性提高,那自然更容易维护了。
变更引起的风险降低。变更是必然的,如果单一职责原则遵守得好,当修改一个功能时,可以显著降低对其他功能的影响。
2、接口隔离
客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。
接口差分的尽量小,但是要有限度,避免造成接口数量过多,使设计复杂化。
提高了系统的内聚性,减少了对外交互,降低了系统的耦合性。
3、依赖倒置
高层模块不应该依赖底层模块,二者都应该依赖抽象。
相对于细节的多变性,抽象的东西都是比较稳定的,抽象不应该依赖细节,细节应该依赖抽象。
学会面向接口(抽象类)编程。 接口是一种规范。
它目的是通过要面向接口的编程来降低类间的耦合性,任何类都不应该从具体类派生(继承)。
普通方法参数写接口,传递子类对象。
构造器参数写接口,传递子类对象。
set方法参数写接口,传递子类对象。
变量的声明类型尽量是抽象类或接口,这样实际对象和依赖的变量之间存在一个缓冲层,有利于扩展优化。
使用继承时尽量遵循里氏替换原则。
4、里氏替换
里氏替换原则是实现开闭原则的重要方式之一。
它克服了继承中重写父类造成的可复用性变差的缺点。
子类可以扩展父类的功能,但不能改变父类原有的功能 (子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法)。
子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
子类中可以增加自己特有的方法。
可以用组合代替继承 。
5、开闭原则
扩展性强、复用性强。
软件中易变的细节可以从抽象派生来的实现类来进行扩展,当软件需要发生变化时,只需要根据需求重新派生一个实现类来扩展就可以了。
特点是对扩展开放(提供方)、对修改关闭(使用方),抽象构建框架、实现扩展细节。
6、迪米特法则
private、public、protected
从依赖者的角度来说,只依赖应该依赖的对象。
从被依赖者的角度说,只暴露应该暴露的方法。
在类的划分上,应该创建弱耦合的类。类与类之间的耦合越弱,就越有利于实现可复用的目标。
在类的结构设计上,尽量降低类成员的访问权限。
在类的设计上,优先考虑将一个类设置成不变类。

过度使用迪米特法则会使系统产生大量的中介类(友元访问),从而增加系统的复杂性,使模块之间的通信效率降低。
7、合成复用
合成复用原则同里氏替换原则相辅相成的,两者都是开闭原则的具体实现规范。
is 关系 尽量换成 has 关系。
把代码中可能出现变化的那部分代码独立出来,不要和不变的代码混在一起。
面向接口编程,而不是面向实现编程。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值