因为已突破原帖子主题“对结构型设计模式的理解”本身含义,所以转移出来
jamesby 写道
qinysong 写道
jamesby 写道
qinysong 写道
jamesby 写道
我觉得降低偶合,也就是解偶是关键,底偶合高内聚,高扩展,高复用是软件设计的目标。
我觉得“底偶合高内聚”应该在设计原则层次,通过原则指导利于达到设计目标——“高扩展,高复用”
我觉得设计原则应该是
面向接口和抽象编程
优先使用组成而不是继承,也就是HAS A OR IS A 等等,
而遵守设计原则的软件就是高内聚底偶合的设计,也就是高扩展,高复用的设计!
我认为高扩展,高复用是终极目标,但是达到了高内聚底偶合的目标也就达到了高扩展,高复用的目标.
嗯,非常好,这样的讨论非常促进我的认识
我想再引入一个词——属性,一个好的软件,一个最大限度接近优秀目标(高扩展,高复用)的软件本身应该具有一些基本属性,就像高尔基说的“不幸的家庭各有各的不幸,而幸福的家庭都是相似的”,软件也是,不好、劣质的软件各有各的不好之处,而优秀的软件(从设计角度来说)却都具有基本的属性,这些属性中我觉得就可以包括“高内聚、底偶合”。
所以“高内聚、底偶合”这是优秀软件的基本属性,而目标是表达我们最大渴望的主观意愿,一个软件只要高扩展,高复用我们就满足了,在这个满足的前提下我们不在乎是不是高内聚低耦合。但是幸福的家庭都是相似的
比喻的不错。
是不是也可以这样理解,软件的终极目标,就是复用。
可复用的软件一定是可扩展的,可扩展的一定具有高内聚、底偶合的特点。
而软件设计原则是达到这个目标的通道。设计模式是这个终极目标的表现方式。
我觉得软件设计有两个大的目标:
第一个:可重用性。可重用性通过复用之前的劳动成果提高了生产效率,降低了成本;
第二个:可维护性。可维护性通过延长系统的使用寿命,增值了产品价值;
要想设计达到这两个目标,系统就需要有一些特性
包括可读性、高灵活性、易扩展性、通用性、可移植性,这些特性是一个系统表现出来的,可概括为“白箱特性”:),而系统内部也要有一些属性,如高内聚、低耦合,这些内部属性更侧重内部结构性,概括为“黑箱属性”。
为了使一个系统具有那些优秀的特性,有一些手段,或者称为方法
这些方法/手段包括抽象(提高通用性)、封装(增强内聚性)、分离(降低耦合性)等等
当对这些方法/手段进行细化、分类、概括时,就产生了一些设计原则/准则
比如面向接口编程、优先使用对象组合、SRP单职责准则、OCP准则等等
这些准则/原则在一定场景下的经典表现方式,就产生了设计模式
以上是个人理解,因为这种层次的划分包括大量的理解上、语义上的因素,所以每个人的划分可能会有不同,不过我感觉这样的划分虽然可能因人而异,但是他可以让我们有一个全局观念,所以还是很有意义的
大家多批评
分享到:
相关推荐
第一篇分为8章,介绍了软件体系结构的基础理论,包括软件体系结构的概念及演化、软件建模基础、软件体系结构的形式化、软件体系结构的风格、体系结构的描述语言、软件质量建模、设计模式等内容。第二篇分为4章,首先...
我们为您准备了全套的课件PPT,包括软件设计体系结构的详细讲解、各种设计模式的介绍以及设计风格和原则的探讨。无论您是想要深入了解软件设计的理论知识,还是寻找实践指导和案例分析,我们都将为您提供全方位的...
软件体系结构实验报告(设计模式):包含策略模式,代理模式,观察者模式,外观模式,组合模式,抽象工厂,单例,工厂方法,简单工厂,适配器模式,附有代码实例和类图
非常不错的课件,com、ejb、CORBA组件和设计模式介绍的非常详细!
软件设计模式作业,要求用3个设计模式以上实现。代码涉及了装饰模式,工厂模式和适配器模式
另外,这也不是一篇高级专题技术论文,而是一本关于设计模式的书,它描述了在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案。设计模式捕获了随时间进化与发展的问题的求解方法,因此它们并不是人们从...
软件设计原则/深度解析 ---应用案例分析 设计模式应用策略1—建立面向对象思维 设计模式应用策略2—知道设计模式,知道自己不知道 设计模式应用策略3—贴身模仿,研读大师经典作品 设计模式应用策略4—根据场景,用模式...
本书在第1章软件设计模式概述后,从第2章到第24章诠释23个软件设计模式。每一种都以一个生活故事开始,然后是模式定义、模式分析、模式...第25章对各种软件设计模式进行系统总结,第26章是各种软件设计模式综合应用。
嵌入式软件设计的思想与方法,适合深入学习嵌入式的朋友很不错
第25章对各种软件设计模式进行系统总结,第26章是各种软件设计模式综合应用。 JavaScript核心技术 【GitHub】https://github.com/xiaole0310 【csdn博客】http://blog.csdn.net/xiaole0313 【新浪微博】...
软件体系结构课后作业及答案 很不错 的 ,大家可以下载过了看看
比较各种软件设计方法的利弊以及微软MSF流程概述;同大家探讨软件架构设计的思想。同时我们将对微软全部的服务器产品以及桌面产品的集成特性进行介绍。第一天的课程包括: ·软件开发模型选择:XP/MSF/CMMI/Agile...
java设计模式期末大作业,运用了6种模式,包括简单工厂模式、工厂方法模式、单例模式、门面模式、策略模式、观察者模式,文档包括系统流程,系统类图,各个模式的子类图,源代码,实验截图。绝对完整.
Martin在《敏捷软件开发:原则、模式与实践(C#版)》中深入而生动地使用真实案例讲解了面向对象设计的基本原则、重要的设计模式、UML和敏捷方法。 《敏捷软件开发:原则、模式与实践(C#版)》Java版曾荣获2003年第13...
●面向对象设计原则:本书包含了11个面向对象设计原则,涵盖了包的设计和类的设计。这是我所见过的对这方面内容讲解的最清晰、最彻底、最深刻的唯一的一本书。 ●设计模式:本书中讲述了23个设计模式,并都有...
中文名: 敏捷软件开发:原则、模式与实践 原名: Agile Software Development:Principles,Patterns and Practices 别名: 软件工程实践丛书 作者: (美)Robert C.Martin译者: 邓辉 孟岩图书分类: 软件 资源格式: PDF ...
起初,人们把软件设计的重点放在数据结构和算法的选择上。随着软件系统规模越来越大、越来越复杂,整个系统的结构显得越来越重要。 一、软件体系结构风格分析 最初的软件体系结构是Mainframe结构——客户、...
原则,是在编程技巧、编程语言、设计模式、工具之下的最底层的东西,它是人们在几十年的软件开发过程中不断经历、提炼出来的重要经验,体系了软件设计、开发过程中的设计哲学。 随着技术和时代的发展,这些原则可能...