六大原则:
书上这么说,有些不太懂。
一,单一职责原则(single responsibility princple---srp)
定义:应该有且仅有一个原因引起类的变更。(there should never be more than one reason for a class to change)
适用于接口,类,方法设计。
在实际运用中因多种因素很难划分单一职责。划分过细会增加设计复杂度,成本等。因项目,环境而异。
优点:类的复杂性降低,可读性高,可维护性高,可扩展
二,里氏替换原则(liskov substitution princple--lsp)
定义:继承,子类可以替换父类,父类不一定能替换子类。
优点:代码重用,减少创建类的工作量,子与父不同多态,扩展性,开放性
缺点:降低代码灵活性,增强耦合,继承是侵入性
继承规范:1,子类必须完全实现父类的方法
2,子类可以有自己的个性
3,覆写或实现父类的方法时输入参数可以被放大
4,覆写或实现父类的方法时输出结果可以被缩小(感觉是继承的语法规则)
书中建议尽量避免子类的个性 使用子类时缺乏类替换标准
三,依赖倒置原则(dependence inversion princple--dip)
定义:高层模块不依赖底层模块,两者都依赖其抽象
抽象不依赖细节,细节依赖抽象 概括就是面向接口编程(没啥经验体会)
四,接口隔离原则()
定义:客户端不依赖不需要的接口
类间的依赖建立在最小的接口上
一个对外接口对应一个模块(不提供不需要的方法不管是否按规矩不调用)
类间同上不提供多余的接口方法,也即接口的细分(单一职责)。细分适度又是p
五,迪米特法则
定义:一个对象应该对其他对象有最少的了解,(只关心自己用的其他一概不关心)
核心观念就是类间解耦,弱耦合,提高复用,其结果产生大量的中转或跳转类 适可而止
六,开闭原则
变化时添加而不是修改,预留扩展接口,上述五大原则是其具体实现。
言而总之,总而言之,需求变了,你要改,系统要经的住,不能改崩了,改的还要少,越多越危险 稳定