结合设计模式说说如何设计类

一,SOLID法则:

Single responsibility principle

每个类仅仅承担一个具体的任务。特别是那些明显不属于类的功能,应该封装到新的类里去。界面和逻辑的分离就是个很好的例子。

Open/Closed principle

软件开发必须考虑可扩展性,但是扩展不能更改现有的代码,否则可能更引起大范围的连锁反应。设计类的时候,可以通过抽象来隔离变化,并通过继承来实现变化。

Liskov substitution principle

如果派生类B公有继承了基类A,即类B是类A的子类型,那么子类型就能够替换掉父类型,而且这种替换关系不可逆。正是这种替换关系使得父类可以被复用。注意并不是所有的"is a"关系都适用里氏代换,比方说:足球和美式足球都叫足球,但是编程的时候,美式足球不能认足球为父类,因为足球只能用脚,而美式足球可以用手。

Interface segregation principle

接口类设计要尽量简练,只需要包含必要的功能即可。比方说:可以简练到只包含一个纯虚函数。

Dependency inversion principle

针对接口编程,而不是针对实现编程。这样使用接口的类就和接口的具体实现分开了,双方都可以灵活自如,只要遵守接口约定即可。实践中纯虚函数就是接口,针对接口编程就是重写纯虚函数。

二,IC法则(为方便记忆我个人取的名字):

Encapsulation/Information hiding

类的内部数据对外不可见,而只能通过其自身行为改变。封装不仅仅是数据隐藏,也可以是变化点的隐藏。很多设计模式都使用封装来创建接口类,在接口类一侧的修改不会影响到另一侧,从而松开这两侧的耦合,增强了软件的复用。如果被隐藏的具体被调用类报错,只能修改被调用类,而不能在调用类中绕开错误。

Composition

优先使用组合而不是继承。继承是在编译时刻静态定义的,而组合可以在运行时刻动态选择。继承对子类揭示了其父类的实现细节,这就破坏了封装,而组合要求对象遵守共同的接口约定,并不破坏封装。继承中的子类和父类有紧密的依赖关系,而组合由于多了一层接口并不相互依赖。过多的继承可能导致类爆炸,不利于后期的维护,而组合可以防止类爆炸,减少继承层次。

参考文献:

GOF

《设计模式精解》

《大话设计模式》

原文链接:http://www.cnblogs.com/xfu123/archive/2012/06/28/2558377.html

新闻标题:结合设计模式说说如何设计类
文章起源:http://www.mswzjz.cn/qtweb/news37/313987.html

攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能