我们设计系统是为子完成某项业务,为系统设计特定的模式则主要是了项目开发和后期维护,而两者中维护更是主要目标。为此,Peter Coad提出了他的三个设计目标:可扩展性,灵活性,可插入性。对于以抽象、继承和多态为主要特性的OO设计,人们又提出了三个设计原则:
1.封装变化Encapsulate what varies.
2.面向接口编程而非实现 Code to an interface rather than to an implementation.
3.优先使用组合而非继承 Favor Composition Over Inheritance
整体来讲,我觉得设计目标更倾向于架构设计的指导思想,而OO的特性和原则更接近具体编码的指导思想。
从整体的系统设计入手,我认为设计工作主要为分横向与纵向设计两个方面。横向设计主要包括业务范围的设计,纵向设计则主要体现在业务层次的设计,说得熟悉一点也就逻辑架构也物理架构的综合设计,它包括了一个整体的业务逻辑实现过程。就设计的先后顺序而言,我更倾向于先横向再纵向,也就是先确定业务范围,再根据业务要求及业务范围确定相应的层次。
为了达到《设计目标》,需要对业务进行分类(当然,我这里的业务指的是系统功能业务,即系统角色,如工具、逻辑控制、前端、数据库等,这些需要根据具体的客户业务进行翻译后得出),确定哪些是变化的,哪些是不变的,哪些是公用的,哪些是私有的,然后再此基础上,我们产生了业务间的逻辑架构,相应的也有了业务的接口。
如果我们的系统包含子系统(这个在使用Maven进行系统管理的时候会经常遇到),那么一个普通的Java系统就会形成这么一个层次结构:系统->子系统->模块->包->类。
为达到封装的要求,我们会希望在每个层次的每个单元都相互独立(高度内聚,低度耦合)。这样对于每个层次重复按照设计目标进行设计,那么我们最终可以得到一个“高度内聚,低度耦合,面向接口”的系统,而且,这个结论对于系统的每个单元都适用。
而为了完成这个目标,关键在于每个层次的业务分析,也就是识别变化,恰当抽象,做好封装。
而要做好抽象的接口,掌握好基本的设计模式是至关重要的。这些算是经验的总结,涵盖了日常使用的大部情况。当然,如果可以,也可以在日常设计中根据自己的设计目标形成自己的设计模式。可以说,整个设计过程其实就是对设计模式的反复迭代。
分享到:
相关推荐
23个设计模式标准OO结构,还有code和图
OO中对于23种设计模式的整理OO中对于23种设计模式的整理
第一册:《Head First Java》是本完整的面向对象(object-oriented,OO)程序设计和Java的学习指导。 第二册:《HeadFirst设计模式》(中文版)共有14章,每章都介绍了几个设计模式,完整地涵盖了四人组版本全部23个设计...
OO设计原则 --OO设计的LSP里氏替换原则 ,所以使用基类代码的地方,用派生类代码替换后,能够正确的执行动作处理。 ◇ 换句话说,如果派生类替换了基类后,不能够正确执行动作,那么他们的继承关系就应该废除。
关于设计模式的一些总结介绍!
依赖倒置原则的2个重要方针 1.高层模块不应该依赖于低层模块,二者都应该依赖于抽象 2.抽象不应该依赖于细节,细节应该依赖于抽象
(1)--什么是分析模型分析模型是采用分析类,在系统架构和框架的约束下,来实现用例场景的产物。...(让关心OO之路列的朋友们久等了,今天正式开始推出之路系列的第二部,OO系统设计师之路。在第一部OO系统分析
下面小编就为大家带来一篇浅谈java中OO的概念和设计原则(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
设计模式——可复用的OO软件
Hercules 的安全特性指的是功能安全,且为1oo1D 架构,符合IEC 61508 SIL 3 和 ISO 26262 ASIL D 认证,可帮助用户轻松进行系统级认证。 Hercules 基于“安全岛”的思想,通过多种软硬件方式对系统失效和随机失效...
面向对象,编程,OO设计的五大原则 OO的五大原则是指SRP、OCP、LSP、DIP、ISP。
java oo 设计原则
主要介绍了浅谈CSS编程的OOCSS和SMACSS设计模式,作者分析了这两种设计CSS的不同思路,需要的朋友可以参考下
总体设计主要包括系统功能设计、系统总体结构设计、系统数据结构设计和系统安全设计等;详细设计主要包括系统数据库访问的实现,主要功能模块的具体实现,模块实现关键代码等。最后对系统进行功能测试,并对测试结果...
软件架构是一种思想,一个系统蓝图,对软件结构组成的规划和职责设定。而软件框架是一个实现,一个半成品,是针对一个特定问题的解决方案和辅助工具。这一篇讲软件架构和软件框架在UML设计过程中所起的作用。本系列...
【ASP.NET编程知识】浅谈ASP.NET中多层架构.docx
软件工程软考认证,Java与设计模式,下午必考题,24种设计模式
#资源达人分享计划#
由于[GOF95]是论述软件模式的著作的第一本,也是OO设计理论著作中最流行的一本,因此有些人常常使用设计模式(Design Pattern)一词来指所有直接处理软件的架构、设计、程序实现的任何种类的模式