设计原则

软件理论设计总结:


1. 设计原则—SOLID:S:单一职责原则;O:开放关闭原则;L:里氏替换原则;I:接口分离原则;D:依赖倒置原则。

参考:

http://www.cnblogs.com/shanyou/archive/2009/09/21/1570716.html

单一职责原则:一个类只做一种类型责任,当这个类需要承当其他类型的责任的时候,就需要分解这个类。

      例子:

      1.  像user对象和role对象,user对象只能操作用户信息,role对象只能操作角色信息,不能越界。

      2.  像BC层和DAO层的类,BC层的类只负责接收数据、进行业务逻辑处理、输出数据,DAO层的类只负责接收数据、持久化数据、返回持久化结果。

      特例:

      1.  如果做一件事,一定会改变两个实体(这两个实体无法分开),那只能做在一个类中。

      什么时候单一职责会很容易被忽略:

      1.  敏捷开发

      2.  小型项目

开放关闭原则:软件实体应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。

       描述:对类的改动是通过增加代码进行的,而不是改动现有的代码。也就是说,软件开发人员一旦写出了可以运行的代码,就不应该去改变它,而是要保证它能一直运行下去,如何才能做到这一点呢?这就需要借助抽象和多态,即把可能变化的内容抽象出来,从而使抽象的部分是相对稳定的,而具体的实现层则是可以改变和扩展的。(通常做法是用接口或抽象类将可变化内容抽象出来)

将可变化的内容抽象出来,使得抽象部分相对稳定?????

      核心:“找到系统中的可变因素,将其封装起来”。要使用----EVP(封装可变性原则)

EVP的两个要点:

1. 一种可变性不应散落在代码的很多角落,而应封装到一个对象中。
2. 一种可变性与另一种可变性不应混合在一起。

里氏替换原则:当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有is-A关系

换一种说法:同一个继承体系中的对象应该有共同的行为特征。里氏替换原则关注的是怎样良好地使用继承,也就是说不要滥用继承,它是继承复用的基石。

接口分离原则:不能强迫用户去依赖那些他们不使用的接口。换句话说,使用多个专门的接口比使用单一的总接口总要好。

      例子:一个接口有85个方法,这是多么巨大的一个接口,也许这个一个根据业务组合形成的接口,如果将接口拆分成多个独立的小接口,那么可以组合使用,也可以单独使用。

依赖倒置原则

1. 高层模块不应该依赖于低层模块,二者都应该依赖于抽象
2. 抽象不应该依赖于细节,细节应该依赖于抽象