- 1、本文档共489页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件架的构设计培训
* 架构设计实践 * 软件设计的步骤: 一、静态设计。 二、模块间的通信及耦合设计。 三、动态设计。 四、模块调整。 * 一、静态设计 1、按层+高内聚低耦合的原则进行模块划分 1)高内聚低耦合原则(GRASP:高内聚低耦合) 2)按功能分解 3)按业务进行分解 4)以数据转换为中心分解 5)实际运用中的折中 2、划分层次 (架构风格) 1)将模块划入对应的层 2)分层与分区 3)逻辑模块与实体组件的对应关系 * 一、静态设计(续) 3、为模块进行职责分配 1)信息专家+控制者 2)隔离关注面(GRASP:保护变量、间接模式) 3)低耦合原则 4)适当采用设计模式 4、用设计模式优化核心结构 1)用策略/桥接模式作为中心骨架(多态模式) 2)用工厂/抽象工厂模式进行组装。(创建者模式) 3)用命令模式处理事务 * 桥接模式 * 观察者(observer)模式 康凯 * * 命令(command)模式 康凯 * 意图 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。 别名 动作(Action),事务(Transaction) 动机 有时必须向某对象提交请求,但并不知道关于被请求的操作或请求的接受者的任何信息。 例如,用户界面工具箱包括按钮和菜单这样的对象,它们执行请求响应用户输入。但工具箱不能显式的在按钮或菜单中实现该请求,因为只有使用工具箱的应用知道该由哪个对象做哪个操作。而工具箱的设计者无法知道请求的接受者或执行的操作。命令模式通过将请求本身变成一个对象来使工具箱对象可向未指定的应用对象提出请求。这个对象可被存储并像其他的对象一样被传递。这一模式的关键是一个抽象的Command类。 * 例子 * 结构 * 其它设计模式 * VISITOR模式 该系列中的模式如下: VISlTOR模式 ACYCLIC VISITOR模式 DECORATOR模式 EXTENSION OBJECT模式 * 例 是一个常见的问题:例如,有一个Modem对象的层次结构。基类中有所有调制解调器的公共方法。派生类代表不同调制解调器类型的驱动程序。 * 问题 假设需要向该层次结构中增加一个新方法confrgureForUnix。使之可在UNIX下工作。在每个调制解调器派生类中该函数的实现都不相同。(假设每个不同的调制解调器在UNIX中都有自己独特的配置方法和行为特征)。 问题:直接增加configureForUnix方法其实回避了一个问题:对于Windows如何处理? MacOS? Linux? 必须针对所使用的每一种新操作系统都要向Modem层次结构中增加一个新方法? 这种做法是丑陋的:我们永远无法封闭Modem接口。每当出现一种新操作系统时, 就必须更改该接口并重新部署所有的调制解调器软件。 * VISITOR模式的结构 * VISITOR+组合模式 VISTTOR模式的一个非常常见的应用是,遍历大量的数据结构并产生报表。这使得数据结构对象中不含有任何产生报表的代码。如果想增加新报表,只需增加新的访问者,而不需要更改数据结构中的代码。这意味着报表可以被放置在不同的组件中,并且仅被那些需要它们的客户单独使用。 * 例:报表生成器 一个表示材料单的简单数据结构。从该数据结构可以生成无数的报表。 两个可以统计的量:成本;数量 例如可以生成一张一个组合件总成本的报表,或者生成一张列出了一个组合件中所有零件的报表。 * VlSITOR模式的解决方法 * 其它模式 问题: 考虑前面的Modem层次结构。假设有一个具有很多使用者的应用程序。每个使用者都可以坐在他的计算机前,要求系统使用该计算机的调制解调器呼叫另一台计算机。有些用户希望听到拨号声,有些用户则希望他们的调制解调器保持安静。 * DECORATOR模式 DECORATOR模式通过创建一个名为LoudDialModem的全新类来解决这个问题。 LoudDialModem派生自Modem ,并且委托给一个它包含的Modem实例。它捕获对dial函数的调用并在委托前把音量设高。 * 多个Decorator 有时,在同一个类层次结构中可能存在两个或者更多的装饰器(decorator)。 例如, 可能希望用LogoutExitModem来装饰Modem层次结构, 当Hangup被调用时,它会发送字符串 exit。这个装饰器必须要重复已经在LoudDialModem中编写过的所有委托代码。 * SOA的设计思想 * SOA的架构的特点 服务(Service) 定义良好的,自包含的,不依赖于上下文和其它服务的一组功能 SOA(Service-Oriented Architecture) 本质上是一组服务的集合 服务之间相
文档评论(0)