读了《敏捷软件开发》这本书后,觉得对面向对象的理解和编程水平均有提高,拿来和大家分享下,今天简单的说下关于类的设计部分。
类的设计五大准则。
a.单一职责准则。
即每个类干的职责是单一的,比如一个类负责图像操作,一个类负责声音操作。使得每个类划分明确,进一步讲,引起这个类发生改变的方法只有一种,即处理图像元素赋值操作,处理声音快慢操作等功能更具体的类,在外面仅仅暴露了很少的接口,这样设计便于移植,便于维护,使用起来更加顺手。
b.接口分离准则。
即接口是属于客户,而不是于类设计层次,接口提供的方法对于客户不多不少,不能由于系统的某些结构需要,让客户承担更多或更少的接口。这样往往不好,公共接口对于大多用户提供公有操作同时,还需要为不同用户提供所需其他接口。这样不同用户所需要的接口不多不少。
c.扩展开放,修改封闭准则。
即不允许修改原始类,但可以扩展功能,这样就需要进行抽象编程了,就是编写抽象类,接口出来。派生类继承抽象类或实现接口后,将派生类安放置接口或抽象类处,则C++,java多态的特性就会自动的去匹配相应派生类的方法,而不需改变源程序。
d.替换原则准则。
即对于传进来的子类能完成父类完成的操作。此时有前置和后置条件,前置条件强度需降低,后置条件编写需加强,这样派生的子类完成父类的操作才是正常的。
e.依赖倒置准则。
即实现类依赖于抽象,抽象不依赖于实现类,通过对抽象的依赖倒置了实现类对实现类之间的依赖关系,进一步说,如果存在高层类和底层类,高层需要调用底层类,但是底层类经常做改变,那么高层也需要改变。但是高层只是依赖于抽象或接口。则此时隔离了底层的改变对高层的影响。