﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-天使的白骨-文章分类-软件工程与架构</title><link>http://www.cppblog.com/TianShiDeBaiGu/category/18139.html</link><description>给我一个EMACS，我不需要操作系统</description><language>zh-cn</language><lastBuildDate>Sun, 05 Jan 2014 13:56:57 GMT</lastBuildDate><pubDate>Sun, 05 Jan 2014 13:56:57 GMT</pubDate><ttl>60</ttl><item><title>设计模式的UML图</title><link>http://www.cppblog.com/TianShiDeBaiGu/articles/205086.html</link><dc:creator>何清龙</dc:creator><author>何清龙</author><pubDate>Tue, 31 Dec 2013 08:31:00 GMT</pubDate><guid>http://www.cppblog.com/TianShiDeBaiGu/articles/205086.html</guid><wfw:comment>http://www.cppblog.com/TianShiDeBaiGu/comments/205086.html</wfw:comment><comments>http://www.cppblog.com/TianShiDeBaiGu/articles/205086.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/TianShiDeBaiGu/comments/commentRss/205086.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/TianShiDeBaiGu/services/trackbacks/205086.html</trackback:ping><description><![CDATA[<span style="color: #494949; font-family: simsun; background-color: #e7eef4;">转载的，原文链接找不到。</span><span style="color: #494949; font-family: simsun; background-color: #e7eef4;"><br /></span><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">1.抽象工厂(Abstract Factory)模式</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s12.sinaimg.cn/orignal/573860a9g75c0ebf6338b&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s12.sinaimg.cn/middle/573860a9g75c0ebf6338b&amp;690&amp;690" real_src="http://s12.sinaimg.cn/middle/573860a9g75c0ebf6338b&amp;690&amp;690" name="image_operate_79531294714753201" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" action-data="http%3A%2F%2Fs12.sinaimg.cn%2Fmiddle%2F573860a9g75c0ebf6338b%26690%26690" action-type="show-slide" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">意图:为特定的客户(或情况)提供特定系列的对象。</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">2.类的适配器(Adapter)模式</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s16.sinaimg.cn/orignal/573860a9g75c0ebf64c1f&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s16.sinaimg.cn/middle/573860a9g75c0ebf64c1f&amp;690&amp;690" real_src="http://s16.sinaimg.cn/middle/573860a9g75c0ebf64c1f&amp;690&amp;690" name="image_operate_93251294714801574" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">意图:将一个类的接口转换成客户希望的另外一个接口。</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">3.对象的适配器(Adapter)模式</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s5.sinaimg.cn/orignal/573860a9g75c0ebf7c144&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s5.sinaimg.cn/middle/573860a9g75c0ebf7c144&amp;690&amp;690" real_src="http://s5.sinaimg.cn/middle/573860a9g75c0ebf7c144&amp;690&amp;690" name="image_operate_14581294714840645" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">意图:将一个类的接口转换成客户希望的另外一个接口。</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">4.桥梁(Bridge)/柄体(Handle and Body)模式</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s12.sinaimg.cn/orignal/573860a9g75c0ebf954fb&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s12.sinaimg.cn/middle/573860a9g75c0ebf954fb&amp;690&amp;690" real_src="http://s12.sinaimg.cn/middle/573860a9g75c0ebf954fb&amp;690&amp;690" name="image_operate_21711294714845324" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">意图:将抽象部分与它的实现部分分离，使它们都可以独立地变化。</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">5.建造(Builder)模式</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s16.sinaimg.cn/orignal/573860a9g75c0ebfac9ef&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s16.sinaimg.cn/middle/573860a9g75c0ebfac9ef&amp;690&amp;690" real_src="http://s16.sinaimg.cn/middle/573860a9g75c0ebfac9ef&amp;690&amp;690" name="image_operate_89351294714856306" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">意图:将一个复杂对象的构建与它的表示分离，使得同样的构建过程可以创建不同的表示。</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">11.门面(Facade)模式</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s14.sinaimg.cn/orignal/573860a9g75c0ebfc6e5d&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s14.sinaimg.cn/middle/573860a9g75c0ebfc6e5d&amp;690&amp;690" real_src="http://s14.sinaimg.cn/middle/573860a9g75c0ebfc6e5d&amp;690&amp;690" name="image_operate_82491294715084327" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">意图:为子系统中的一组接口提供一个一致的界面，此模式定义了一个高层接口，这个接口使得这一子系统更加容易使用。</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">12.工厂方法(Factory Method)/虚拟构造子(virtual Constructor)/多态性工厂(Polymorphic Factory)模式</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s6.sinaimg.cn/orignal/573860a9g9989430112b5&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s6.sinaimg.cn/middle/573860a9g9989430112b5&amp;690&amp;690" real_src="http://s6.sinaimg.cn/middle/573860a9g9989430112b5&amp;690&amp;690" name="image_operate_54491294715084638" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">意图:定义一个用于创建对象的接口，让子类决定实例化哪一个类。</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">13.享元(Flyweight)模式</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s9.sinaimg.cn/orignal/573860a9g75c0ebfdef18&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s9.sinaimg.cn/middle/573860a9g75c0ebfdef18&amp;690&amp;690" real_src="http://s9.sinaimg.cn/middle/573860a9g75c0ebfdef18&amp;690&amp;690" name="image_operate_88571294715085133" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">意图:运用共享技术有效地支持大量细粒度的对象。</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">14.解释器(Interpreter)模式</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s10.sinaimg.cn/orignal/573860a9g75c0ebff6f59&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s10.sinaimg.cn/middle/573860a9g75c0ebff6f59&amp;690&amp;690" real_src="http://s10.sinaimg.cn/middle/573860a9g75c0ebff6f59&amp;690&amp;690" name="image_operate_87701294714939244" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">意图:给定一个语言，定义它的文法的一种表示，并定义一个解释器，这个解释器使用该表示来解释语言中的句子。</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">15.迭代子(Iterator)/游标(Cursor)模式</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s8.sinaimg.cn/orignal/573860a9g75c0ec00f267&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s8.sinaimg.cn/middle/573860a9g75c0ec00f267&amp;690&amp;690" real_src="http://s8.sinaimg.cn/middle/573860a9g75c0ec00f267&amp;690&amp;690" name="image_operate_71421294715085499" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">意图:提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">16.调停者(Mediator)模式</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s1.sinaimg.cn/orignal/573860a9g75c0ec027e50&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s1.sinaimg.cn/middle/573860a9g75c0ec027e50&amp;690&amp;690" real_src="http://s1.sinaimg.cn/middle/573860a9g75c0ec027e50&amp;690&amp;690" name="image_operate_57341294714970068" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">意图:用一个中介对象来封装一系列的对象交互。</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">17.备忘录(Memento)模式</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s5.sinaimg.cn/orignal/573860a9g75c0ec03f214&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s5.sinaimg.cn/middle/573860a9g75c0ec03f214&amp;690&amp;690" real_src="http://s5.sinaimg.cn/middle/573860a9g75c0ec03f214&amp;690&amp;690" name="image_operate_38631294715085927" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">意图:在不破坏封装性的前提下，捕获一个对象的内部状态，并在该对象之外保存这个状态。</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">18.观察者(Observer)模式</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s11.sinaimg.cn/orignal/573860a9g75c0ec0401ba&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s11.sinaimg.cn/middle/573860a9g75c0ec0401ba&amp;690&amp;690" real_src="http://s11.sinaimg.cn/middle/573860a9g75c0ec0401ba&amp;690&amp;690" name="image_operate_21871294714992284" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">19.原型(Prototype)模式</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s3.sinaimg.cn/orignal/573860a9g75c0ec058a32&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s3.sinaimg.cn/middle/573860a9g75c0ec058a32&amp;690&amp;690" real_src="http://s3.sinaimg.cn/middle/573860a9g75c0ec058a32&amp;690&amp;690" name="image_operate_89701294715086299" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">意图:用原型实例指定创建对象的种类，并且通过拷贝这些原型创建新的对象。</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">20.代理(Proxy)模式</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s11.sinaimg.cn/orignal/573860a9g75c0ec07009a&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s11.sinaimg.cn/middle/573860a9g75c0ec07009a&amp;690&amp;690" real_src="http://s11.sinaimg.cn/middle/573860a9g75c0ec07009a&amp;690&amp;690" name="image_operate_5651294715086551" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">意图:为其他对象提供一种代理以控制对这个对象的访问。</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">21.单例(Singleton)模式</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s16.sinaimg.cn/orignal/573860a9g75c0ec08995f&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s16.sinaimg.cn/middle/573860a9g75c0ec08995f&amp;690&amp;690" real_src="http://s16.sinaimg.cn/middle/573860a9g75c0ec08995f&amp;690&amp;690" name="image_operate_3471294715039205" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">意图:保证一个类仅有一个实例，并提供一个访问它的全局访问点。</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">22.状态(State)模式</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s3.sinaimg.cn/orignal/573860a9g75c0ec0a22a2&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s3.sinaimg.cn/middle/573860a9g75c0ec0a22a2&amp;690&amp;690" real_src="http://s3.sinaimg.cn/middle/573860a9g75c0ec0a22a2&amp;690&amp;690" name="image_operate_41861294715086870" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">意图:允许一个对象在其内部状态改变时改变它的行为。</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">23.策略(Strategy)模式</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s8.sinaimg.cn/orignal/573860a9g75c0ec0ba987&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s8.sinaimg.cn/middle/573860a9g75c0ec0ba987&amp;690&amp;690" real_src="http://s8.sinaimg.cn/middle/573860a9g75c0ec0ba987&amp;690&amp;690" name="image_operate_47121294715087077" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">24.模版方法(Template Method)模式</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s12.sinaimg.cn/orignal/573860a9g75c0ec0b8f8b&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s12.sinaimg.cn/middle/573860a9g75c0ec0b8f8b&amp;690&amp;690" real_src="http://s12.sinaimg.cn/middle/573860a9g75c0ec0b8f8b&amp;690&amp;690" name="image_operate_48961294715071436" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">意图:定义一个操作中的算法的骨架，而将一些步骤延迟到子类中。</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">25.访问者(Visitor)模式</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s6.sinaimg.cn/orignal/573860a9g75c0ec0d1615&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s6.sinaimg.cn/middle/573860a9g75c0ec0d1615&amp;690&amp;690" real_src="http://s6.sinaimg.cn/middle/573860a9g75c0ec0d1615&amp;690&amp;690" name="image_operate_79501294715087695" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">意图:表示一个作用于某对象结构中的各元素的操作。</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><span style="color: #494949; font-family: simsun; background-color: #e7eef4;">==========================================================</span><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s12.sinaimg.cn/orignal/573860a9g75c0ec3649eb&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s12.sinaimg.cn/middle/573860a9g75c0ec3649eb&amp;690&amp;690" real_src="http://s12.sinaimg.cn/middle/573860a9g75c0ec3649eb&amp;690&amp;690" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" />&nbsp;</a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s4.sinaimg.cn/orignal/573860a9g75c0ec3aec63&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s4.sinaimg.cn/middle/573860a9g75c0ec3aec63&amp;690&amp;690" real_src="http://s4.sinaimg.cn/middle/573860a9g75c0ec3aec63&amp;690&amp;690" name="image_operate_74131294715177700" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s16.sinaimg.cn/orignal/573860a9g75c0ec395c8f&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s16.sinaimg.cn/middle/573860a9g75c0ec395c8f&amp;690&amp;690" real_src="http://s16.sinaimg.cn/middle/573860a9g75c0ec395c8f&amp;690&amp;690" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" />&nbsp;</a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s14.sinaimg.cn/orignal/573860a9g75c0ec34dccd&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s14.sinaimg.cn/middle/573860a9g75c0ec34dccd&amp;690&amp;690" real_src="http://s14.sinaimg.cn/middle/573860a9g75c0ec34dccd&amp;690&amp;690" name="image_operate_9321294715178036" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s5.sinaimg.cn/orignal/573860a9g75c0ec3349b4&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s5.sinaimg.cn/middle/573860a9g75c0ec3349b4&amp;690&amp;690" real_src="http://s5.sinaimg.cn/middle/573860a9g75c0ec3349b4&amp;690&amp;690" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" />&nbsp;</a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s5.sinaimg.cn/orignal/573860a9g75c0ec289884&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s5.sinaimg.cn/middle/573860a9g75c0ec289884&amp;690&amp;690" real_src="http://s5.sinaimg.cn/middle/573860a9g75c0ec289884&amp;690&amp;690" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" />&nbsp;</a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s3.sinaimg.cn/orignal/573860a9g75c0ec2a35a2&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s3.sinaimg.cn/middle/573860a9g75c0ec2a35a2&amp;690&amp;690" real_src="http://s3.sinaimg.cn/middle/573860a9g75c0ec2a35a2&amp;690&amp;690" name="image_operate_92451294715178316" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s9.sinaimg.cn/orignal/573860a9g75c0ec2d42d8&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s9.sinaimg.cn/middle/573860a9g75c0ec2d42d8&amp;690&amp;690" real_src="http://s9.sinaimg.cn/middle/573860a9g75c0ec2d42d8&amp;690&amp;690" name="image_operate_52921294715178388" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s11.sinaimg.cn/orignal/573860a9g75c0ec2ba53a&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s11.sinaimg.cn/middle/573860a9g75c0ec2ba53a&amp;690&amp;690" real_src="http://s11.sinaimg.cn/middle/573860a9g75c0ec2ba53a&amp;690&amp;690" name="image_operate_77411294715178492" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s9.sinaimg.cn/orignal/573860a9g75c0ec1c5e68&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s9.sinaimg.cn/middle/573860a9g75c0ec1c5e68&amp;690&amp;690" real_src="http://s9.sinaimg.cn/middle/573860a9g75c0ec1c5e68&amp;690&amp;690" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" />&nbsp;</a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s4.sinaimg.cn/orignal/573860a9g75c0ec2706d3&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s4.sinaimg.cn/middle/573860a9g75c0ec2706d3&amp;690&amp;690" real_src="http://s4.sinaimg.cn/middle/573860a9g75c0ec2706d3&amp;690&amp;690" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" />&nbsp;</a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s3.sinaimg.cn/orignal/573860a9g75c0ec1ae642&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s3.sinaimg.cn/middle/573860a9g75c0ec1ae642&amp;690&amp;690" real_src="http://s3.sinaimg.cn/middle/573860a9g75c0ec1ae642&amp;690&amp;690" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" />&nbsp;</a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s15.sinaimg.cn/orignal/573860a9g75c0ec303bde&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s15.sinaimg.cn/middle/573860a9g75c0ec303bde&amp;690&amp;690" real_src="http://s15.sinaimg.cn/middle/573860a9g75c0ec303bde&amp;690&amp;690" name="image_operate_63961294715176871" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s9.sinaimg.cn/orignal/573860a9g75c0ec2591d8&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s9.sinaimg.cn/middle/573860a9g75c0ec2591d8&amp;690&amp;690" real_src="http://s9.sinaimg.cn/middle/573860a9g75c0ec2591d8&amp;690&amp;690" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" />&nbsp;</a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s3.sinaimg.cn/orignal/573860a9g75c0ec227392&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s3.sinaimg.cn/middle/573860a9g75c0ec227392&amp;690&amp;690" real_src="http://s3.sinaimg.cn/middle/573860a9g75c0ec227392&amp;690&amp;690" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" />&nbsp;</a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s12.sinaimg.cn/orignal/573860a9g75c0ec20f70b&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s12.sinaimg.cn/middle/573860a9g75c0ec20f70b&amp;690&amp;690" real_src="http://s12.sinaimg.cn/middle/573860a9g75c0ec20f70b&amp;690&amp;690" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" />&nbsp;</a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s1.sinaimg.cn/orignal/573860a9g75c0ec1defd0&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s1.sinaimg.cn/middle/573860a9g75c0ec1defd0&amp;690&amp;690" real_src="http://s1.sinaimg.cn/middle/573860a9g75c0ec1defd0&amp;690&amp;690" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" />&nbsp;</a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s11.sinaimg.cn/orignal/573860a9g75c0ec10252a&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s11.sinaimg.cn/middle/573860a9g75c0ec10252a&amp;690&amp;690" real_src="http://s11.sinaimg.cn/middle/573860a9g75c0ec10252a&amp;690&amp;690" name="image_operate_75011294715184412" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s16.sinaimg.cn/orignal/573860a9g75c0ec17e36f&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s16.sinaimg.cn/middle/573860a9g75c0ec17e36f&amp;690&amp;690" real_src="http://s16.sinaimg.cn/middle/573860a9g75c0ec17e36f&amp;690&amp;690" name="image_operate_22111294715183628" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s7.sinaimg.cn/orignal/573860a9g75c0ec31d4c6&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s7.sinaimg.cn/middle/573860a9g75c0ec31d4c6&amp;690&amp;690" real_src="http://s7.sinaimg.cn/middle/573860a9g75c0ec31d4c6&amp;690&amp;690" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" />&nbsp;</a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s10.sinaimg.cn/orignal/573860a9g75c0ec2eae79&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s10.sinaimg.cn/middle/573860a9g75c0ec2eae79&amp;690&amp;690" real_src="http://s10.sinaimg.cn/middle/573860a9g75c0ec2eae79&amp;690&amp;690" name="image_operate_20301294715195988" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" action-data="http%3A%2F%2Fs10.sinaimg.cn%2Fmiddle%2F573860a9g75c0ec2eae79%26690%26690" action-type="show-slide" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s12.sinaimg.cn/orignal/573860a9g75c0ec24153b&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s12.sinaimg.cn/middle/573860a9g75c0ec24153b&amp;690&amp;690" real_src="http://s12.sinaimg.cn/middle/573860a9g75c0ec24153b&amp;690&amp;690" name="image_operate_48001294715196089" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s3.sinaimg.cn/orignal/573860a9g75c0ec196842&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s3.sinaimg.cn/middle/573860a9g75c0ec196842&amp;690&amp;690" real_src="http://s3.sinaimg.cn/middle/573860a9g75c0ec196842&amp;690&amp;690" name="image_operate_92071294715196335" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=573860a90100o4k0&amp;url=http://s5.sinaimg.cn/orignal/573860a9g75c0ec0ea894&amp;690" target="_blank" style="text-decoration: none; color: #4e7953; font-family: simsun; background-color: #e7eef4;"><img src="http://s5.sinaimg.cn/middle/573860a9g75c0ec0ea894&amp;690&amp;690" real_src="http://s5.sinaimg.cn/middle/573860a9g75c0ec0ea894&amp;690&amp;690" name="image_operate_20381294715196669" alt="设计模式的UML图(转)" title="设计模式的UML图(转)" action-data="http%3A%2F%2Fs5.sinaimg.cn%2Fmiddle%2F573860a9g75c0ec0ea894%26690%26690" action-type="show-slide" style="margin: 0px; padding: 0px; border: 0px; list-style: none;" /></a><br style="color: #494949; font-family: simsun; background-color: #e7eef4;" /><img src ="http://www.cppblog.com/TianShiDeBaiGu/aggbug/205086.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/TianShiDeBaiGu/" target="_blank">何清龙</a> 2013-12-31 16:31 <a href="http://www.cppblog.com/TianShiDeBaiGu/articles/205086.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《软件架构设计》读书笔记    来源：网络</title><link>http://www.cppblog.com/TianShiDeBaiGu/articles/159965.html</link><dc:creator>何清龙</dc:creator><author>何清龙</author><pubDate>Fri, 11 Nov 2011 09:03:00 GMT</pubDate><guid>http://www.cppblog.com/TianShiDeBaiGu/articles/159965.html</guid><wfw:comment>http://www.cppblog.com/TianShiDeBaiGu/comments/159965.html</wfw:comment><comments>http://www.cppblog.com/TianShiDeBaiGu/articles/159965.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/TianShiDeBaiGu/comments/commentRss/159965.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/TianShiDeBaiGu/services/trackbacks/159965.html</trackback:ping><description><![CDATA[<table align="center" border="0" cellpadding="0" cellspacing="0" width="895"><tbody>                                                                           <tr>                  <td bgcolor="#FFFFFF" valign="top"> <table height="6003" align="center" border="0" cellpadding="3" cellspacing="1" width="834">                     <tbody><tr>                        <td bgcolor="#FFFFFF" valign="top"><br /><p><strong> 1. 软件架构概述</strong></p>                         <p><strong>1.1 什么是软件架构</strong></p>                         <p>&#9678; 软件架构的概念很混乱。如果你问五个不同的人，可能会得到五种不同的答案。 </p>                         <p>&#9678; 软件架构概念主要分为两大流派：<br />                           <br />                           &nbsp;&nbsp; 组成派：软件架构 = 组件 + 交互。<br />                           &nbsp;&nbsp; 决策派：软件架构 = 重要决策集。 </p>                         <p>&#9678; 组成派和决策派的概念相辅相成。 </p>                         <p><strong> 1.2 软件架构和子系统、框架之间的关系</strong></p>                         <p>&#9678; 复杂性是层次化的。 --《人月神话》 </p>                         <p>&#9678; 好的架构设计必须把变化点错落有致地封装到软件系统的不同部分(即关注点分离)。<br />                           <br />                           &nbsp;&nbsp; 通过关注点分离，达到&#8220;系统中的一部分发生了变化，不会影响其他部分&#8221;的目标。 </p>                         <p>&#9678; 软件单元的粒度：<br />                           <br />                           &nbsp;&nbsp; * 粒度最小的单元通常是&#8220;类&#8221;。<br />                           &nbsp;&nbsp; * 几个类紧密协作形成&#8220;模块&#8221;。<br />                           &nbsp;&nbsp; * 完成相对独立的功能的多个模块构成了&#8220;子系统&#8221;。<br />                           &nbsp;&nbsp; * 多个子系统相互配合才能满足一个完整应用的需求，从而构成了软件&#8220;系统&#8221;。<br />                           &nbsp;&nbsp; * 一个大型企业往往使用多套系统，多套系统通过互操作形成&#8220;集成系统&#8221;。 </p>                         <p>&#9678; 软件单元的粒度是相对的。同一个软件单元，在不同场景下我们会以不同的粒度看待它。 </p>                         <p>&#9678; 架构(Architecture)不等于框架(Framework)。<br />                           <br />                           &nbsp;&nbsp; 框架只是一种特殊的软件，框架也有架构。 </p>                         <p>&#9678; 可以通过架构框架化达到&#8220;架构重用&#8221;的目的，如很多人都在用 Spring 框架提供的控制反转和依赖注入来构建自己的架构。                          </p>                         <p><strong> 1.3 软件架构的作用</strong></p>                         <p>&#9678; 如果一个项目的系统架构(包括理论基础)尚未确定，就不应该进行此系统的全面开发。-- Barry Boehm,《Engineering                            Context》 </p>                         <p>&#9678; 一个缺陷充斥的系统，将始终是一个缺陷充斥的系统。-- Timothy C. Lethbridge,《面向对象软件工程》                          </p>                         <p>&#9678; 软件架构设计为什么这么难？<br />                           <br />                           &nbsp;&nbsp; 因为它是跨越现实世界与计算机世界之间鸿沟的一座桥。<br />                           &nbsp;&nbsp; 软件架构设计要完成从面向业务到面向技术的转换，在鸿沟上架起一座桥梁。 </p>                         <p>&nbsp;&nbsp; 需求 -&gt; <strong>架构设计</strong> -&gt; 软件架构                            -&gt; 系统开发 -&gt; 软件系统<br />                           &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                            ~~~~~~~~&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                            ~~~~~~~~</p>                         <p>&#9678; 软件架构对新产品开发的作用：<br />                           <br />                           &nbsp;&nbsp; * <strong>上承业务目标。<br />                           </strong>&nbsp;&nbsp; * <strong>下接技术决策。<br />                           </strong>&nbsp;&nbsp; * <strong>控制复杂性。<br />                           </strong>&nbsp;&nbsp;&nbsp;&nbsp; 先进行架构设计，后进行详细设计和编码实现，符合&#8220;基于问题深度分而治之&#8221;的理念。<br />                           &nbsp;&nbsp; * <strong>组织开发。<br />                           </strong>&nbsp;&nbsp;&nbsp;&nbsp; 软件架构方案在小组中间扮演了&#8220;桥梁&#8221;和&#8220;合作契约&#8221;的作用。<br />                           &nbsp;&nbsp; * <strong>利于迭代开发和增量交付。<br />                           </strong>&nbsp;&nbsp;&nbsp;&nbsp; 以架构为中心进行开发，为增量交付提供了良好的基础。在架构经过验证之后，可以专注于功能的增量提交。<br />                           &nbsp;&nbsp; * <strong>提高质量。 </strong> </p>                         <p>&#9678; 软件架构对软件产品线开发的作用：<br />                           <br />                           &nbsp;&nbsp; * 固化核心知识；<br />                           &nbsp;&nbsp; * 提供可重用资产；<br />                           &nbsp;&nbsp; * 缩短推出产品的周期；<br />                           &nbsp;&nbsp; * 降低开发和维护成本；<br />                           &nbsp;&nbsp; * 提高产品质量；<br />                           &nbsp;&nbsp; * 支持批量定制。 </p>                         <p>&#9678; <strong>软件产品线</strong>：指具有一组可管理的、公共特性的、软件密集性系统的集合，这些系统满足特定的市场需求或任务需求，并且按照预定义方式从一个公共的核心资产集开发得到。                          </p>                         <p> <strong>软件产品线架构</strong>：针对一个公司或组织内的一系列产品而设计的通用架构。                          </p>                         <p><strong>2. 软件架构设计方法</strong></p>                         <p><strong> 2.1 软件架构为谁而设计</strong></p>                         <p>&#9678; 架构师应当为项目相关的不同角色而设计：<br />                           <br />                           &nbsp;&nbsp; * 架构师要为客户负责，满足他们的业务目标和约束条件。<br />                           &nbsp;&nbsp; * 架构师要为用户负责，满足他们关心的功能需求和运行期质量属性。<br />                           &nbsp;&nbsp; * 架构师必须顾及处于协作分工&#8220;下游&#8221;的开发人员。<br />                           &nbsp;&nbsp; * 架构师必须考虑&#8220;周边&#8221;的管理人员，为他们进行分工管理、协调控制和评估监控等工作提供清晰的基础。                          </p>                         <p><strong> 2.2 五视图法</strong></p>                         <p>&#9678; 什么是软件架构视图？<br />                           <br />                           &nbsp;&nbsp; 软件架构视图是对于从某一视角看到的系统所作的简化描述，描述中涵盖了系统的某一特定方面，而省略了与此无关的其他方面。                          </p>                         <p>&#9678; 软件架构要涵盖的内容和决策太多了，超过了人脑&#8220;一蹴而就&#8221;的能力范围，因此宜采用&#8220;分而治之&#8221;的办法。即通过不同的视图来描述架构。                          </p>                         <p>&#9678; 软件架构的五视图法：<br />                           <br />                           &nbsp;&nbsp; * <strong>逻辑架构</strong><br />                           &nbsp;&nbsp;&nbsp;&nbsp; 逻辑架构关注功能。其设计着重考虑功能需求。<br />                           &nbsp;&nbsp; * <strong>开发架构</strong><br />                           &nbsp;&nbsp;&nbsp;&nbsp; 开发架构关注程序包。其设计着重考虑开发期质量属性，如可扩展性、可重用性、可移植性、易理解性和易测试性等。                            <br />                           &nbsp;&nbsp; * <strong>运行架构<br />                           </strong>&nbsp;&nbsp;&nbsp;&nbsp; 运行架构关注进程、线程、对象等运行时概念，以及相关的并发、同步、通信等问题。<br />                           &nbsp;&nbsp;&nbsp;&nbsp; 其设计着重考虑运行期质量属性，例如性能、可伸缩性、持续可用性和安全性等。                            <br />                           &nbsp;&nbsp; * <strong>物理架构</strong><br />                           &nbsp;&nbsp;&nbsp;&nbsp; 物理架构关注软件系统最终如何安装或部署到物理机器。其设计着重考虑&#8220;安装和部署需求&#8221;。                            <br />                           &nbsp;&nbsp; * <strong>数据架构<br />                           </strong>&nbsp;&nbsp;&nbsp;&nbsp; 数据架构关注持久化数据的存储方案。其设计着重考虑&#8220;数据需求&#8221;。                          </p>                         <p><strong> 2.3 从概念性架构到实际架构</strong> </p>                         <p>&#9678; 少就是多 (Less is more.)。 -- 密斯&#183;凡德罗 </p>                         <p>&#9678; 概念性架构是对系统设计的最初构想。 </p>                         <p>&#9678; 一般来说，实际的软件架构设计过程是，先进行概念性架构的设计，把最关键的设计要素和交互机制确定下来，然后再考虑具体技术的运用，设计出实际架构。                          </p>                         <p><strong> 2.4 架构设计中的关键要素及解决策略</strong></p>                         <p>&#9678; 策略是制胜的关键。-- 张明正，《挡不住的趋势》 </p>                         <p>&#9678; 最好的软件开发人员都知道一个秘密：美的东西比丑的东西创建起来更廉价，也更快捷。-- Robert                            C. Martin, 《软件之美》 </p>                         <p>&#9678; 时间就是系统架构的生命。-- Philippe Kruchten </p>                         <p>&#9678; 方法产生于恐惧。 </p>                         <p>&#9678; 面对时间紧迫的压力，我们有理由质疑那种不顾时间花销、一味追求软件架构高质量的做法。软件架构是软件系统质量的核心，必须足够重视，但在不适当的时候&#8220;用时间换完美&#8221;会毁掉整个项目。                          </p>                         <p>&#9678; 架构设计并非&#8220;好的就是成功的&#8221;，而是&#8220;适合的才是成功的&#8221;。 </p>                         <p>&#9678; 软件架构设计中的关键要素及解决策略： <br />                           <br />                           &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                            <strong>关键要素</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                            <strong>策略<br />                           </strong>&nbsp;&nbsp; ------------------------------------&nbsp;&nbsp;                            -----------------<br />                           &nbsp;&nbsp; 1. 是否遗漏了至关重要的非功能需求？&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                            全面认识需求。<br />                           &nbsp;&nbsp; 2. 能否驯服数量巨大且频繁变化的需求？&nbsp;&nbsp;&nbsp;                            关键需求决定架构。<br />                           &nbsp;&nbsp; 3. 能否从容地设计软件架构的不同方面？&nbsp;&nbsp;&nbsp;                            多视图探寻架构。<br />                           &nbsp;&nbsp; 4. 是否及早验证架构方案并作出了调整？&nbsp;&nbsp;&nbsp;                            及早验证架构。 </p>                         <p><strong> 2.5 软件架构要设计到什么程度</strong></p>                         <p>&#9678; 软件系统的架构涵盖了整个系统，尽管架构的有些部分可能只有&#8220;一寸深&#8221;。-- Ivar Jacobson,                            《统一软件开发过程之路》 </p>                         <p>&#9678; 软件架构是团队开发的基础。 </p>                         <p>&#9678; 软件架构要设计到什么程度？<br />                           <br />                           &nbsp;&nbsp; * 由于项目的不同、开发团队情况的不同，软件架构的设计程度会有不同。<br />                           &nbsp;&nbsp; * 软件架构应当为开发人员提供足够的指导和限制。 </p>                         <p>&#9678; 高来高去式架构设计的症状：<br />                           <br />                           &nbsp;&nbsp; * <strong>缺失重要架构视图。</strong><br />                           &nbsp;&nbsp;&nbsp;&nbsp; 遗漏了某些重要视图，从而遗漏了对团队某些角色的指导。<br />                           &nbsp;&nbsp; * <strong>浅尝辄止、不够深入。<br />                           </strong>&nbsp;&nbsp;&nbsp;&nbsp; 将重大技术风险遗留到后续开发中。<br />                           &nbsp;&nbsp; * <strong>名不副实的分层架构。<br />                           </strong>&nbsp;&nbsp;&nbsp;&nbsp; 对各层之间交互接口和交互机制的设计严重不足。</p>                         <p><strong> 3. 软件架构设计过程</strong></p>                         <p><strong> 3.1 软件架构设计过程总览</strong></p>                         <p>&#9678; 一般的软件过程： </p>                         &nbsp;&nbsp; 概念化阶段 -&gt; 分析阶段 -&gt; 架构设计阶段 -&gt; 并行开发与测试阶段                          -&gt; 验收与交付阶段<br /> &nbsp;&nbsp; &#9472;&#9472;&#9516;&#9472;&#9472;&nbsp;&nbsp;&nbsp;                          &#9472;&#9472;&#9516;&#9472;&nbsp;&nbsp;&nbsp; &#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&nbsp;&nbsp;&nbsp; &#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&nbsp;&nbsp;&nbsp;                          &#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#8595;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#8595;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 愿景&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          需求&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          架构&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          可执行系统&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          交付的系统                          <p>&#9678; 软件架构设计过程： </p>                         &nbsp;&nbsp; 需求分析 -&gt; 领域建模 -&gt; 确定关键需求 -&gt; 概念性架构设计                          -&gt; 细化架构 -&gt; 验证架构<br /> &nbsp;&nbsp; &#9474;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474;&nbsp;&nbsp;&nbsp; &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;&nbsp;&nbsp;&nbsp;                          &#9492;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9496;<br /> &nbsp;&nbsp; &#9474;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          概念性架构&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          实际架构<br /> &nbsp;&nbsp; &#9492;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9496;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          分析阶段&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          架构设计阶段                          <p> <strong>3.2 需求分析</strong> </p>                         <p>3.2.1 几个概念 </p>                         <p>&#9678; 需求捕获 vs 需求分析 vs 系统分析<br />                           <br />                           &nbsp;&nbsp; * 需求捕获是获取知识的过程，知识从无到有。<br />                           &nbsp;&nbsp; * 需求分析是挖掘和整理知识的过程，它在已掌握知识的基础上进行。<br />                           &nbsp;&nbsp; * 系统分析？如果说需求分析致力于&#8220;做什么&#8221;，那么系统分析则涉及&#8220;怎么做&#8221;。                          </p>                         <p>3.2.2 架构师必须掌握的需求知识 </p>                         <p>&#9678; 软件架构师不必是需求捕获专家，也不必是编写《软件需求规格说明书》的专家。<br />                           <br />                           &nbsp;&nbsp; 但他一定应在需求分类、需求折衷和需求变更的研究方面是专家，否则他和其他软件架构师相比，就输在了&#8220;起跑线&#8221;上。                          </p>                         <p>&#9678; 软件需求的类型 </p>                         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9484; 功能需求&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9484; 运行期质量属性<br /> &nbsp;&nbsp; 软件需求 &#9508;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9484; 质量属性 &#9508;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9492; 非功能需求 &#9508;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9492; 开发期质量属性<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9492; 约束                          <p>&#9678; 软件质量属性分类方式 </p>                         <p>&nbsp;&nbsp; <strong>运行期质量属性</strong><br />                           <br />                           &nbsp;&nbsp; * 性能 (Performance)<br />                           &nbsp;&nbsp; * 安全性 (Security)<br />                           &nbsp;&nbsp; * 易用性 (Usability)<br />                           &nbsp;&nbsp; * 持续可用性 (Availability)<br />                           &nbsp;&nbsp; * 可伸缩性 (Scalability)<br />                           &nbsp;&nbsp; * 互操作性 (Interoperability)<br />                           &nbsp;&nbsp; * 可靠性 (Reliability)<br />                           &nbsp;&nbsp; * 鲁棒性 (Robustness) </p>                         <p>&nbsp;&nbsp; <strong>开发期质量属性<br />                           <br />                           </strong>&nbsp;&nbsp; * 易理解性 (Understandability)<br />                           &nbsp;&nbsp; * 可扩展性 (Extensibility)<br />                           &nbsp;&nbsp; * 可重用性 (Reusability)<br />                           &nbsp;&nbsp; * 可测试行 (Testability)<br />                           &nbsp;&nbsp; * 可维护性 (Maintainability)<br />                           &nbsp;&nbsp; * 可移植性 (Portability) </p>                         <p> <strong>3.3 领域建模</strong></p>                         <p>&#9678; 就像《高效能人士的七个习惯》提到的&#8220;由内而外全面造就自己&#8221;的观点一样，对待软件开发，要具备&#8220;由内而外造就软件&#8221;的理念。                          </p>                         <p>&#9678; 想让软件系统随需应变吗？请给软件一个支持变化的&#8220;心&#8221;。 </p>                         <p>&#9678; 什么是领域模型？<br />                           <br />                           &nbsp;&nbsp; 领域模型是对实际问题领域的抽象表示，它专注于分析问题领域本身，发掘重要的业务领域概念，并建立业务领域概念之间的关系。                          </p>                         <p>&#9678; 领域建模和需求分析活动是相互伴随、互相支持、交叠演进的。 </p>                         <p>&#9678; 领域模型对软件架构乃至整个软件系统开发工作的作用： </p>                         &nbsp;&nbsp; * 探索复杂问题、固化领域知识；<br /> &nbsp;&nbsp; * 决定功能范围、影响可扩展性；<br />                          &nbsp;&nbsp; * 提供交流基础、促进有效沟通。                          <p> <strong>3.4 确定关键需求</strong></p>                         <p>&#9678; 功能、质量和商业需求的某个集合&#8220;塑造&#8221;了架构。-- Len Bass, 《软件架构实践(第2版)》                          </p>                         <p>&#9678; 关键需求决定架构，其余需求验证架构。 </p>                         <p>&#9678; 什么是对软件架构关键的需求？<br />                           <br />                           &nbsp;&nbsp; * 关键的功能需求。<br />                           &nbsp;&nbsp; * 关键的质量属性需求。<br />                           &nbsp;&nbsp; * 关键的商业需求。 </p>                         <p>&#9678; 如何确定关键需求？ </p>                         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9484;&gt; 确定关键功能需求&nbsp;&nbsp;&nbsp;&nbsp; &#9488;<br /> &nbsp;&nbsp;                          &#9679; -&gt; 全面整理需求 -&gt; 分析约束性需求 &#9508;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9500;&gt; &#9679;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9492;&gt; 确定关键质量属性需求 &#9496;                          <p> <strong>3.5 概念性架构设计</strong></p>                         <p>&#9678; 概念性架构设计的步骤(这三个步骤以迭代方式进行)：<br />                           <br />                           &nbsp;&nbsp; 1. 鲁棒性分析；<br />                           &nbsp;&nbsp; 2. 引入架构模式；<br />                           &nbsp;&nbsp; 3. 质量属性分析。 </p>                         <p>3.5.1 鲁棒性分析 </p>                         <p>&#9678; 所谓鲁棒性分析是这样一种方法：通过分析用例规约中的事件流，识别出实现用例规定的功能所需的主要对象及其职责，形成以职责模型为主的初步设计。                          </p>                         <p>&#9678; 鲁棒性分析是从功能需求向设计方案过度的第一步，所获得的初步设计是一种理想化的职责模型，它的重点是识别组成软件系统的高级职责块、规划它们之间的关系。                          </p>                         <p>&#9678; 鲁棒性分析填补了分析和设计之间的鸿沟。 </p>                         <p>&#9678; 鲁棒图包含三种元素：边界对象、控制对象和实体对象。(见书P196) </p>                         <p>3.5.2 引入架构模式 </p>                         <p>&#9678; 较为经典的几种架构模式：<br />                           <br />                           &nbsp;&nbsp; 分层、MVC、微内核、基于元模型的架构、管道-过滤器。 </p>                         <p>&#9678; 关于架构模式的几点说明：<br />                           <br />                           &nbsp;&nbsp; * 分层<br />                           &nbsp;&nbsp;&nbsp;&nbsp; 避免名不副实的分层架构，即对各层之间交互接口和交互机制的设计严重不足。<br />                           &nbsp;&nbsp; * 微内核<br />                           &nbsp;&nbsp;&nbsp;&nbsp; 缺点：设计和实现的复杂性；性能较低。<br />                           &nbsp;&nbsp;&nbsp;&nbsp; 优点：扩展性强，可移植性强，软件系统的生命周期长。 </p>                         <p>3.5.3 质量属性分析 </p>                         <p>&#9678; &#8220;属性-场景-决策&#8221;表方法。举例如下： </p>                         &nbsp;&nbsp; &#9484;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;<br />                          &nbsp;&nbsp; &#9474;属性&nbsp;&nbsp;&nbsp; &#9474;场景&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474;决策&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474;<br /> &nbsp;&nbsp; &#9500;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508;<br />                          &nbsp;&nbsp; &#9474;可扩展性&#9474;数据库类型可替换&nbsp; &#9474;建立数据库存取层&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474;<br /> &nbsp;&nbsp; &#9500;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508;<br />                          &nbsp;&nbsp; &#9474;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474;允许加载第三方模块&#9474;采用插件机制&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474;<br /> &nbsp;&nbsp; &#9500;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508;<br />                          &nbsp;&nbsp; &#9474;...&nbsp;&nbsp;&nbsp;&nbsp; &#9474;...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474;...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474;<br /> &nbsp;&nbsp; &#9492;&#9472;&#9472;&#9472;&#9472;&#9524;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9524;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;                          <p> <strong>3.6 细化架构设计</strong> </p>                         <p>&#9678; 架构细化工作主要体现在基于五视图方法进行架构细化： </p>                         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          约束<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#8595;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;<br /> &nbsp;&nbsp; 领域模型 -&gt; &#9474;基于五视图方法&#9474;<br /> &nbsp;&nbsp;                          关键需求 -&gt; &#9474;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474;-&gt; 架构方案<br /> &nbsp;&nbsp; 概念架构 -&gt; &#9474; 进行架构细化 &#9474;<br />                          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#8593;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          经验                          <p>&#9678; 架构细化设计的工作内容： </p>                         &nbsp;&nbsp; &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;<br />                          &nbsp;&nbsp; &#9474; 架构设计视图 &#9474; 设计任务&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474;<br /> &nbsp;&nbsp; &#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508;<br />                          &nbsp;&nbsp; &#9474; 逻辑架构&nbsp;&nbsp;&nbsp;&nbsp; &#9474; 细化功能单元；&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474;<br /> &nbsp;&nbsp; &#9474;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474; 发现通用机制；&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474;<br /> &nbsp;&nbsp; &#9474;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474; 细化领域模型；&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474;<br /> &nbsp;&nbsp; &#9474;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474; 确定子系统接口和交互机制。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474;<br /> &nbsp;&nbsp; &#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508;<br />                          &nbsp;&nbsp; &#9474; 开发架构&nbsp;&nbsp;&nbsp;&nbsp; &#9474; 确定要开发或直接利用的程序包之间的依赖关系；&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474;<br /> &nbsp;&nbsp; &#9474;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474; 确定采用的技术；&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474;<br /> &nbsp;&nbsp; &#9474;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474; 确定采用的框架等。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474;<br /> &nbsp;&nbsp; &#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508;<br />                          &nbsp;&nbsp; &#9474; 数据架构&nbsp;&nbsp;&nbsp;&nbsp; &#9474; 持久化数据存储方案；&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474;<br /> &nbsp;&nbsp; &#9474;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474; 数据传递、数据复制、数据同步等策略(可选)。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474;<br /> &nbsp;&nbsp; &#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508;<br />                          &nbsp;&nbsp; &#9474; 运行架构&nbsp;&nbsp;&nbsp;&nbsp; &#9474; 确定引入哪些进程与线程；&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474;<br /> &nbsp;&nbsp; &#9474;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474; 确定主动对象、被动对象，以及控制关系；&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474;<br /> &nbsp;&nbsp; &#9474;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474; 处理进程线程的创建、销毁、通信机制、资源争用等；&nbsp;&nbsp; &#9474;<br /> &nbsp;&nbsp;                          &#9474;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474; 协议设计。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474;<br /> &nbsp;&nbsp; &#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508;<br />                          &nbsp;&nbsp; &#9474; 物理架构&nbsp;&nbsp;&nbsp;&nbsp; &#9474; 确定物理配置方案；&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474;<br /> &nbsp;&nbsp; &#9474;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474; 确定如何将目标程序映射到物理节点。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                          &#9474;<br /> &nbsp;&nbsp; &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9524;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;                          <p>&#9678; 逻辑架构设计中，&#8220;发现通用机制&#8221;是应被特别强调的。 </p>                         <p>&nbsp;&nbsp; 机制(Mechanism)是模式的实例。机制是特定上下文中重复出现的问题的特定解决方案。                          </p>                         <p>&nbsp;&nbsp; 具有良好架构的系统具备概念完整性。它通过对系统架构建立一种清晰的认识来发现通用的抽象和机制。利用这种共性使最终产生的系统结构更为简单。                          </p>                         <p> <strong>3.7 实现并验证软件架构</strong></p>                         <p>&#9678; 好的策略必须是一再求证、测试、发现瑕疵漏洞，另想途径或方法来弥补策略不足，有时甚至得全盘放弃，重新策划。--                            张明正，《挡不住的趋势》 </p>                         <p>&#9678; 架构原型对功能性需求的实现非常有限，那么&#8220;架构验证&#8221;要验证什么？<br />                           <br />                           &nbsp;&nbsp; 答案是要验证架构对质量属性需求的支持程度，包括运行期质量属性和开发期质量属性。                          </p>                         <p>&#9678; 验证架构的两种方法：<br />                           <br />                           &nbsp;&nbsp; * <strong>原型法</strong>。<br />                           &nbsp;&nbsp;&nbsp;&nbsp; 对于项目型开发，常采用&#8220;原型法&#8221;。即对一组架构设计决策在非功能需求方面的满足程度进行验证。该原型往往是演进型，而非抛弃型。<br />                           &nbsp;&nbsp; * <strong>框架法</strong>。<br />                           &nbsp;&nbsp;&nbsp;&nbsp;  对于产品型开发，采用&#8220;框架法&#8221;有更多优点。该方法将架构设计方案用框架的形式实现，并在此基础上进行评估验证。在框架实现后，在框架基础上实现部分应用 的功能，即实现一个小的垂直原型，从而进行实际非功能测试和开发期质量属性评价。                        </p></td></tr></tbody></table></td></tr></tbody></table><img src ="http://www.cppblog.com/TianShiDeBaiGu/aggbug/159965.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/TianShiDeBaiGu/" target="_blank">何清龙</a> 2011-11-11 17:03 <a href="http://www.cppblog.com/TianShiDeBaiGu/articles/159965.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>