Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)归海一刀published in(发表于) 2014/1/30 0:50:33 .net(C#)开发小技巧漫谈之二_[Asp.Net教程]
这五个原则每一个都还有一个三个字母的缩写,不再列出。对于这六个原则,一直都在思考,但一直都未能理解。 单一职责讲的分摊责任,责任到个体,一个对象只负责一件事情。而接口隔离原则,讲的是一个接口只担任一个角色,我不明白两个原则有什么区别,讲的不是意思吗,干吗还要分成两个原则分别定义,并且还加个英文缩写,冠冕堂皇的像高等数学公式,特别是里氏替换原则的定义。 一个对象如果其内部对其它所有对象都是不可见的,那么这个类便毫无用途;相反,如果全部可见,则可能是最糟糕的设计。封装是促使类产生的直接原始原因,也是面对对象的第一原则。因为封装,我们要用setter与getter把变量封装起来;因为封装,我们要用方法把类封装起来。而客户代码对对象的读取、操作必须按照我们预定义的通道。这也是[开放封闭原则]表达的思想。人有五官,眼睛是看的唯一通道,而耳朵是听的唯一通道,人不能用脚听、用屁眼看,大自然创造人也应用了封装的思想。 对于两个方法,如果传进去的参数相同,返回的结果也相同,那么这两个方法还不可以认为是相同的吗?至于两个方法的内部各是怎么实现我们大可不必关心。根据这个朴素的原理,接口产生了。面向接口编程也顺理成章成为了面向对象编程的第二个原则。[接口隔离原则]是对面向接口编程的一条修饰。[依赖倒置原则]实质也是面向接口编程。 关于面向对象,纵向来说有继承、多态,横向来说是组合编程。很多高手推荐组合编程,因为组合编程可以改变对象本身。对象本身都可以改变了,还有什么不可以改变的。组合编程是在面向对象设计中常用的伎俩,可以作为第三个原则。如果需求有变,运用组合编程的设计的改动将可能是最小的。 对于一个对象,它有哪些因素?原始材料(参数,内部变量、对象)、加工策略、返回格式。所谓的设计模式是对这三者(要么是接口编程,要么是组合编程)在不同层次以不同方式的改变。如果这三者都可以改变,那么这个对象是最灵活的了,但恐怕也没有什么作用了。如果什么都不能改变,那么当需求变化时,灾难便来临了。 我们说,一个类只负责一件事情,那么这一件事情的单位是如何划分的,究竟多大也才是“一件”。对于腿负责走路这件事情,它是由大腿小腿以及膝关节协调完成的,看见了吧,这“一件”事情又分为了许多个“一件”。于是系统架构产生了颗粒度的概念,产生了微架构的思想。 系统设计的颗粒大小是与需求的颗粒大小是对应的。细到哪个层次,还必须由需求来定。具体问题具体分析,在编程领域也两样适用。这项功夫需要在项目开发中磨炼。 在系统架构中,我个人觉得应该: 其一,不应该受到细节的干扰。写到这里,我想起了那个家喻户哓的赵本山与宋丹丹表演的小品:
其二,要考虑具体语言的特性。譬如,AS3不支持私有的构造器,运用Singleton模式就受到影响。AS3中有事件广播机制,可以利用它使用Command模式。 既要忘记细节实现,又要记住其语言特征,这似乎是矛盾的。是矛盾的就对了,这世间的东西没有一件不是矛盾的。来源:sban's .net blog(cnblogs)
赞