<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/625b1068be9ad24cfafbc19b/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/625b1068be9ad24cfafbc19b/bg1.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0">本书设计实例从面向对象的设计中精选出<span class="_ _0"> </span><span class="ls1">23<span class="_ _0"> </span>个设计模式,总结</span></div><div class="t m0 x2 h2 y2 ff1 fs0 fc0 sc0 ls2 ws0">了面向对象设计中最有价值的经验,<span class="_ _1"></span><span class="ls3">并且用简洁可复用的形式表达出</span></div><div class="t m0 x2 h2 y3 ff1 fs0 fc0 sc0 ls0 ws0">来。<span class="_ _2"></span>本书分类描述了一组设计良好,<span class="_ _2"></span>表达清楚的软件设计模式,<span class="_ _2"></span>这些</div><div class="t m0 x2 h2 y4 ff1 fs0 fc0 sc0 ls1 ws0">模式在实用环境下有特别有用。 </div><div class="t m0 x1 h2 y5 ff1 fs0 fc0 sc0 ls4 ws0"> </div><div class="t m0 x3 h3 y6 ff1 fs1 fc0 sc0 ls5 ws0">目<span class="_ _3"></span> 录<span class="_ _3"></span> </div><div class="t m0 x2 h4 y7 ff2 fs2 fc0 sc0 ls4 ws0"> </div><div class="t m0 x2 h4 y8 ff3 fs2 fc0 sc0 ls4 ws0">序言<span class="ff2"> </span></div><div class="t m0 x2 h4 y9 ff3 fs2 fc0 sc0 ls4 ws0">前言<span class="ff2"> </span></div><div class="t m0 x2 h4 ya ff3 fs2 fc0 sc0 ls4 ws0">读者指南<span class="ff2"> </span></div><div class="t m0 x2 h4 yb ff3 fs2 fc0 sc0 ls4 ws0">第<span class="_ _4"> </span><span class="ff2">1<span class="_"> </span></span>章<span class="ff2 ls6"> </span>引言<span class="ff2 ls7"> <span class="_ _5"></span> 1<span class="_ _6"></span> </span></div><div class="t m0 x4 h4 yc ff2 fs2 fc0 sc0 ls4 ws1">1.1 <span class="ff3 ws0">什么是设计模式<span class="ff2 ls7"> <span class="_ _7"></span> 2<span class="_ _6"></span> </span></span></div><div class="t m0 x4 h4 yd ff2 fs2 fc0 sc0 ls8 ws2">1.2 Smalltalk <span class="_ _8"></span>MVC<span class="_ _4"> </span><span class="ff3 ls4 ws0">中的设计模式<span class="ff2 ls7"> <span class="_ _9"></span> 3<span class="_ _6"></span> </span></span></div><div class="t m0 x4 h4 ye ff2 fs2 fc0 sc0 ls4 ws1">1.3 <span class="ff3 ws0">描述设计模式<span class="ff2 ls7"> 4<span class="_ _6"></span> </span></span></div><div class="t m0 x4 h4 yf ff2 fs2 fc0 sc0 ls4 ws1">1.4 <span class="ff3 ws0">设计模式的编目<span class="ff2 ls7"> <span class="_ _7"></span> 5<span class="_ _6"></span> </span></span></div><div class="t m0 x4 h4 y10 ff2 fs2 fc0 sc0 ls4 ws1">1.5 <span class="ff3 ws0">组织编目</span><span class="ws3"> <span class="_ _6"></span> 7 </span></div><div class="t m0 x4 h4 y11 ff2 fs2 fc0 sc0 ls4 ws1">1.6 <span class="ff3 ws0">设计模式怎样解决设计问题<span class="ff2 ls7"> <span class="_ _a"></span> 8<span class="_ _6"></span> </span></span></div><div class="t m0 x5 h4 y12 ff2 fs2 fc0 sc0 ls4 ws1">1.6.1 <span class="ff3 ws0">寻找合适的对象<span class="ff2 ls7"> 8<span class="_ _6"></span> </span></span></div><div class="t m0 x5 h4 y13 ff2 fs2 fc0 sc0 ls4 ws1">1.6.2 <span class="ff3 ws0">决定对象的粒度<span class="ff2 ls7"> 9<span class="_ _6"></span> </span></span></div><div class="t m0 x5 h4 y14 ff2 fs2 fc0 sc0 ls4 ws1">1.6.3 <span class="ff3 ws0">指定对象接口<span class="ff2 ls7"> <span class="_ _a"></span> 9<span class="_ _6"></span> </span></span></div><div class="t m0 x5 h4 y15 ff2 fs2 fc0 sc0 ls4 ws1">1.6.4 <span class="ff3 ws0">描述对象的实现<span class="ff2 ls7"> 1<span class="_ _6"></span>0<span class="_ _6"></span> </span></span></div><div class="t m0 x5 h4 y16 ff2 fs2 fc0 sc0 ls4 ws1">1.6.5 <span class="ff3 ws0">运用复用机制</span><span class="ws3"> <span class="_ _a"></span> 13 </span></div><div class="t m0 x5 h4 y17 ff2 fs2 fc0 sc0 ls4 ws1">1.6.6 <span class="ff3 ws0">关联运行时刻和编译时刻的结构<span class="ff2 ls7"> 1<span class="_ _6"></span>5<span class="_ _6"></span> </span></span></div><div class="t m0 x5 h4 y18 ff2 fs2 fc0 sc0 ls4 ws1">1.6.7 <span class="ff3 ws0">设计应支持变化<span class="ff2 ls7"> 1<span class="_ _6"></span>6<span class="_ _6"></span> </span></span></div><div class="t m0 x4 h4 y19 ff2 fs2 fc0 sc0 ls4 ws1">1.7 <span class="ff3 ws0">怎样选择设计模式</span><span class="ws3"> <span class="_ _8"></span> 19 </span></div><div class="t m0 x4 h4 y1a ff2 fs2 fc0 sc0 ls4 ws1">1.8 <span class="ff3 ws0">怎样使用设计模式</span><span class="ws3"> <span class="_ _8"></span> 20 </span></div><div class="t m0 x2 h4 y1b ff3 fs2 fc0 sc0 ls4 ws0">第<span class="_ _4"> </span><span class="ff2">2<span class="_"> </span></span>章<span class="ff2 ls6"> </span>实例研究:设计一个文档编辑器<span class="ff2 ws3"> <span class="_ _7"></span> 22 </span></div><div class="t m0 x4 h4 y1c ff2 fs2 fc0 sc0 ls4 ws1">2.1 <span class="ff3 ws0">设计问题</span><span class="ws3"> <span class="_ _6"></span> 23 </span></div><div class="t m0 x4 h4 y1d ff2 fs2 fc0 sc0 ls4 ws1">2.2 <span class="ff3 ws0">文档结构</span><span class="ws3"> <span class="_ _6"></span> 23 </span></div><div class="t m0 x5 h4 y1e ff2 fs2 fc0 sc0 ls4 ws1">2.2.1 <span class="ff3 ws0">递归组合</span><span class="ws3"> <span class="_ _3"></span> 24 </span></div><div class="t m0 x5 h4 y1f ff2 fs2 fc0 sc0 ls4 ws1">2.2.2 <span class="ff3 ws0">图元</span><span class="ws3"> <span class="_ _8"></span> 25 </span></div><div class="t m0 x5 h4 y20 ff2 fs2 fc0 sc0 ls4 ws1">2.2.3 <span class="ff3 ws0">组合模式</span><span class="ws3"> <span class="_ _3"></span> 27 </span></div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
</body>
</html>
<div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/625b1068be9ad24cfafbc19b/bg2.jpg"><div class="t m0 x4 h4 y21 ff2 fs2 fc0 sc0 ls4 ws1">2.3 <span class="ff3 ws0">格式化</span><span class="ws3"> <span class="_ _3"></span> 27 </span></div><div class="t m0 x5 h4 y22 ff2 fs2 fc0 sc0 ls4 ws1">2.3.1 <span class="ff3 ws0">封装格式化算法<span class="ff2 ls7"> 2<span class="_ _6"></span>7<span class="_ _6"></span> </span></span></div><div class="t m0 x5 h4 y23 ff2 fs2 fc0 sc0 ls4 ws1">2.3.2 Compositor<span class="_ _4"> </span><span class="ff3 ws0">和<span class="_ _4"> </span></span><span class="ls9 ws4">Composition <span class="_ _b"></span> 27 </span></div><div class="t m0 x5 h4 y24 ff2 fs2 fc0 sc0 ls4 ws1">2.3.3 <span class="ff3 ws0">策略模式</span><span class="ws3"> <span class="_ _3"></span> 29 </span></div><div class="t m0 x4 h4 y25 ff2 fs2 fc0 sc0 ls4 ws1">2.4 <span class="ff3 ws0">修饰用户界面<span class="ff2 ls7"> 2<span class="_ _6"></span>9<span class="_ _6"></span> </span></span></div><div class="t m0 x5 h4 y26 ff2 fs2 fc0 sc0 ls4 ws1">2.4.1 <span class="ff3 ws0">透明围栏</span><span class="ws3"> <span class="_ _3"></span> 29 </span></div><div class="t m0 x5 h4 y27 ff2 fs2 fc0 sc0 lsa ws5">2.4.2 Monoglyph <span class="_ _c"></span> <span class="_ _d"> </span> <span class="_ _d"> </span>30 </div><div class="t m0 x5 h4 y28 ff2 fs2 fc0 sc0 lsb ws6">2.4.3 Decorator <span class="ff3 ls4 ws0">模式<span class="ff2 ws3"> <span class="_ _5"></span> 32 </span></span></div><div class="t m0 x4 h4 y29 ff2 fs2 fc0 sc0 ls4 ws1">2.5 <span class="ff3 ws0">支持多种视感标准</span><span class="ws3"> <span class="_ _8"></span> 32 </span></div><div class="t m0 x5 h4 y2a ff2 fs2 fc0 sc0 ls4 ws1">2.5.1 <span class="ff3 ws0">对象创建的抽象<span class="ff2 ls7"> 3<span class="_ _6"></span>2<span class="_ _6"></span> </span></span></div><div class="t m0 x5 h4 y2b ff2 fs2 fc0 sc0 ls4 ws1">2.5.2 <span class="ff3 ws0">工厂类和产品类<span class="ff2 ls7"> 3<span class="_ _6"></span>3<span class="_ _6"></span> </span></span></div><div class="t m0 x5 h4 y2c ff2 fs2 fc0 sc0 lsc ws7">2.5.3 Abstract <span class="_ _8"></span>Factory<span class="_ _4"> </span><span class="ff3 ls4 ws0">模式<span class="ff2 ws3"> <span class="_ _e"></span> 35 </span></span></div><div class="t m0 x4 h4 y2d ff2 fs2 fc0 sc0 ls4 ws1">2.6 <span class="ff3 ws0">支持多种窗口系统</span><span class="ws3"> <span class="_ _8"></span> 35 </span></div><div class="t m0 x5 h4 y2e ff2 fs2 fc0 sc0 ls4 ws1">2.6.1 <span class="ff3 ws0">我们是否可以使用<span class="_ _4"> </span></span><span class="lsd ws8">Abstract Factory<span class="_"> </span></span><span class="ff3 ws0">模式</span><span class="ws3"> <span class="_ _f"></span> 35 </span></div><div class="t m0 x5 h4 y2f ff2 fs2 fc0 sc0 ls4 ws1">2.6.2 <span class="ff3 ws0">封装实现依赖关系</span><span class="ws3"> <span class="_ _7"></span> 35 </span></div><div class="t m0 x5 h4 y30 ff2 fs2 fc0 sc0 ls4 ws9">2.6.3 W<span class="_ _10"></span>indow<span class="_ _4"> </span><span class="ff3 ws0">和<span class="_ _4"> </span></span><span class="ls9 ws4">W<span class="_ _10"></span>indowImp <span class="_ _11"></span> 37 </span></div><div class="t m0 x5 h4 y31 ff2 fs2 fc0 sc0 lse wsa">2.6.4 Bridge <span class="ff3 ls4 ws0">模式<span class="ff2 ws3"> <span class="_ _12"></span> 40 </span></span></div><div class="t m0 x4 h4 y32 ff2 fs2 fc0 sc0 ls4 ws1">2.7 <span class="ff3 ws0">用户操作</span><span class="ws3"> <span class="_ _6"></span> 40 </span></div><div class="t m0 x5 h4 y33 ff2 fs2 fc0 sc0 ls4 ws1">2.7.1 <span class="ff3 ws0">封装一个请求</span><span class="ws3"> <span class="_ _a"></span> 41 </span></div><div class="t m0 x5 h4 y34 ff2 fs2 fc0 sc0 lsf wsb">2.7.2 Command <span class="ff3 ls10 ws0">类及其子类</span><span class="ls4 ws3"> <span class="_ _b"></span> 41 </span></div><div class="t m0 x5 h4 y35 ff2 fs2 fc0 sc0 ls4 ws1">2.7.3 <span class="ff3 ws0">撤消和重做</span><span class="ws3"> <span class="_ _6"></span> 42 </span></div><div class="t m0 x5 h4 y36 ff2 fs2 fc0 sc0 ls4 ws1">2.7.4 <span class="ff3 ws0">命令历史记录</span><span class="ws3"> <span class="_ _a"></span> 42 </span></div><div class="t m0 x5 h4 y37 ff2 fs2 fc0 sc0 lsf wsb">2.7.5 Command <span class="ff3 ls11 ws0">模式</span><span class="ls4 ws3"> <span class="_ _13"></span> 44 </span></div><div class="t m0 x4 h4 y38 ff2 fs2 fc0 sc0 ls4 ws1">2.8 <span class="ff3 ws0">拼写检查和断字处理</span><span class="ws3"> <span class="_ _5"></span> 44 </span></div><div class="t m0 x5 h4 y39 ff2 fs2 fc0 sc0 ls4 ws1">2.8.1 <span class="ff3 ws0">访问分散的信息<span class="ff2 ls7"> 4<span class="_ _6"></span>4<span class="_ _6"></span> </span></span></div><div class="t m0 x5 h4 y3a ff2 fs2 fc0 sc0 ls4 ws1">2.8.2 <span class="ff3 ws0">封装访问和遍历<span class="ff2 ls7"> 4<span class="_ _6"></span>5<span class="_ _6"></span> </span></span></div><div class="t m0 x5 h4 y3b ff2 fs2 fc0 sc0 lsd wsc">2.8.3 Iterator<span class="_ _4"> </span><span class="ff3 ls12 ws0">类及其子类</span><span class="ls4 ws3"> <span class="_ _14"></span> 46 </span></div><div class="t m0 x5 h4 y3c ff2 fs2 fc0 sc0 lsd wsc">2.8.4 Iterator<span class="_ _4"> </span><span class="ff3 ls4 ws0">模式<span class="ff2 ws3"> <span class="_ _15"></span> 48 </span></span></div><div class="t m0 x5 h4 y3d ff2 fs2 fc0 sc0 ls4 ws1">2.8.5 <span class="ff3 ws0">遍历和遍历过程中的动作</span><span class="ws3"> <span class="_ _3"></span> 48 </span></div><div class="t m0 x5 h4 y3e ff2 fs2 fc0 sc0 ls4 ws1">2.8.6 <span class="ff3 ws0">封装分析</span><span class="ws3"> <span class="_ _3"></span> 48 </span></div><div class="t m0 x5 h4 y3f ff2 fs2 fc0 sc0 lsd wsc">2.8.7 V<span class="_ _10"></span>isitor <span class="ff3 ls12 ws0">类及其子类</span><span class="ls4 ws3"> <span class="_ _16"></span> 51 </span></div><div class="t m0 x5 h4 y40 ff2 fs2 fc0 sc0 lsd wsc">2.8.8 V<span class="_ _10"></span>isitor <span class="ff3 ls4 ws0">模式<span class="ff2 ws3"> <span class="_ _12"></span> 52 </span></span></div><div class="t m0 x4 h4 y41 ff2 fs2 fc0 sc0 ls4 ws1">2.9 <span class="ff3 ws0">小结</span><span class="ws3"> <span class="_ _5"></span> 53 </span></div><div class="t m0 x2 h4 y42 ff3 fs2 fc0 sc0 ls4 ws0">第<span class="_ _4"> </span><span class="ff2">3<span class="_"> </span></span>章<span class="ff2 ls6"> </span>创建型模式<span class="ff2 ws3"> <span class="_ _a"></span> 54 </span></div><div class="t m0 x4 h4 y43 ff2 fs2 fc0 sc0 ls13 wsd">3.1 Abstract <span class="_ _8"></span>Factory<span class="ff3 ls4 ws0">(抽象工厂)—对象创建型模式<span class="ff2 ws3"> <span class="_ _e"></span> 57 </span></span></div><div class="t m0 x4 h4 y44 ff2 fs2 fc0 sc0 ls4 ws1">3.2 Builder<span class="ff3 ls14 ws0">(生成器)—对象创建型模式</span><span class="ws3"> <span class="_ _5"></span> 63 </span></div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf3" class="pf w0 h0" data-page-no="3"><div class="pc pc3 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/625b1068be9ad24cfafbc19b/bg3.jpg"><div class="t m0 x4 h4 y21 ff2 fs2 fc0 sc0 lse wsa">3.3 Factory <span class="_ _8"></span>Method<span class="ff3 ls4 ws0">(工厂方法)—对象创建型模式<span class="ff2 ws3"> <span class="_ _17"></span> 70 </span></span></div><div class="t m0 x4 h4 y22 ff2 fs2 fc0 sc0 ls4 ws1">3.4 Prototype<span class="ff3 ls14 ws0">(原型)—对象创建型模式</span><span class="ws3"> <span class="_ _18"></span> 87 </span></div><div class="t m0 x4 h4 y23 ff2 fs2 fc0 sc0 ls13 wsd">3.5 Singleton<span class="ff3 ls14 ws0">(单件)—对象创建型模式</span><span class="ls4 ws3"> <span class="_ _19"></span> 84 </span></div><div class="t m0 x4 h4 y24 ff2 fs2 fc0 sc0 ls4 ws1">3.6 <span class="ff3 ws0">创建型模式的讨论</span><span class="ws3"> <span class="_ _8"></span> 89 </span></div><div class="t m0 x2 h4 y25 ff3 fs2 fc0 sc0 ls4 ws0">第<span class="_ _4"> </span><span class="ff2">4<span class="_"> </span></span>章<span class="ff2 ls6"> </span>结构型模式<span class="ff2 ws3"> <span class="_ _a"></span> 91 </span></div><div class="t m0 x4 h4 y26 ff2 fs2 fc0 sc0 lsa ws5">4.1 Adapter<span class="ff3 ls14 ws0">(适配器)—类对象结构型模式</span><span class="ls4 ws3"> <span class="_ _1a"></span> 92 </span></div><div class="t m0 x4 h4 y45 ff2 fs2 fc0 sc0 lsa ws5">4.2 Bridge<span class="ff3 ls4 ws0">(桥接)—对象结构型模式<span class="ff2 ws3"> <span class="_ _12"></span> 100 </span></span></div><div class="t m0 x4 h4 y46 ff2 fs2 fc0 sc0 lsb ws6">4.3 Composite<span class="ff3 ls14 ws0">(组成)—对象结构型模式</span><span class="ls4 ws3"> <span class="_ _1b"></span> 107 </span></div><div class="t m0 x4 h4 y47 ff2 fs2 fc0 sc0 ls15 wse">4.4 Decorator<span class="ff3 ls14 ws0">(装饰)—对象结构型模式</span><span class="ls4 ws3"> <span class="_ _5"></span> 1<span class="_ _10"></span>15 </span></div><div class="t m0 x4 h4 y48 ff2 fs2 fc0 sc0 lsf wsb">4.5 F<span class="_ _1c"></span>ACADE<span class="ff3 lsd ws0">(外观)—对象结构型模式</span><span class="ls4 ws3"> <span class="_ _14"></span> 121 </span></div><div class="t m0 x4 h4 y49 ff2 fs2 fc0 sc0 lsa ws5">4.6 Flyweight<span class="ff3 ls14 ws0">(享元)—对象结构型模式</span><span class="ls4 ws3"> <span class="_ _1d"></span> 128 </span></div><div class="t m0 x4 h4 y4a ff2 fs2 fc0 sc0 ls13 wsd">4.7 Proxy<span class="ff3 ls4 ws0">(代理)—对象结构型模式<span class="ff2 ws3"> <span class="_ _9"></span> 137 </span></span></div><div class="t m0 x4 h4 y4b ff2 fs2 fc0 sc0 ls4 ws1">4.8 <span class="ff3 ws0">结构型模式的讨论</span><span class="ws3"> <span class="_ _8"></span> 144 </span></div><div class="t m0 x5 h4 y4c ff2 fs2 fc0 sc0 lsa ws5">4.8.1 Adapter<span class="_ _4"> </span><span class="ff3 ls4 ws0">与<span class="_ _4"> </span></span><span class="ls16 wsf">Bridge <span class="_ _1e"></span> 144 </span></div><div class="t m0 x5 h4 y4d ff2 fs2 fc0 sc0 lsa ws5">4.8.2 Composite<span class="ff3 ls4 ws0">、<span class="ff2 ls13">Decorator<span class="_"> </span></span>与<span class="_ _4"> </span></span><span class="ls13 ws10">Proxy <span class="_ _1f"></span> 145 </span></div><div class="t m0 x2 h4 y4e ff3 fs2 fc0 sc0 ls4 ws0">第<span class="_ _4"> </span><span class="ff2">5<span class="_"> </span></span>章<span class="ff2 ls6"> </span>行为模式<span class="ff2 ws3"> <span class="_ _6"></span> 147 </span></div><div class="t m0 x4 h4 y4f ff2 fs2 fc0 sc0 ls17 ws11">5.1 CHAIN <span class="_ _8"></span>OF <span class="_ _8"></span>RESPONSIBIL <span class="_ _8"></span>ITY<span class="ff3 lsd ws0">(职责链)—对象行为型模式<span class="ff2 ls18"> </span></span></div><div class="t m0 x4 h4 y50 ff2 fs2 fc0 sc0 ls4 ws3"> 147 </div><div class="t m0 x4 h4 y33 ff2 fs2 fc0 sc0 ls19 ws12">5.2 COMMAND<span class="ff3 lsd ws0">(命令)—对象行为型模式</span><span class="ls4 ws3"> <span class="_ _20"></span> 154 </span></div><div class="t m0 x4 h4 y34 ff2 fs2 fc0 sc0 ls17 ws11">5.3 INTERPRETER<span class="ff3 ls4 ws0">(解释器)—类行为型模式<span class="ff2 ws3"> <span class="_ _17"></span> 162 </span></span></div><div class="t m0 x4 h4 y35 ff2 fs2 fc0 sc0 lsd wsc">5.4 ITERA<span class="_ _2"></span>TOR<span class="ff3 ws0">(迭代器)—对象行为型模式</span><span class="ls4 ws3"> <span class="_ _1d"></span> 171 </span></div><div class="t m0 x4 h4 y36 ff2 fs2 fc0 sc0 lsf wsb">5.5 MEDIA<span class="_ _2"></span>TOR<span class="ff3 lsd ws0">(中介者)—对象行为型模式</span><span class="ls4 ws3"> <span class="_ _21"></span> 181 </span></div><div class="t m0 x4 h4 y37 ff2 fs2 fc0 sc0 ls14 ws13">5.6 MEMENTO<span class="_ _22"></span><span class="ff3 lsd ws0">(备忘录)—对象行为型模式<span class="ff2 ls4 ws3"> <span class="_ _23"></span> 188 </span></span></div><div class="t m0 x4 h4 y38 ff2 fs2 fc0 sc0 ls1a ws14">5.7 OBSER<span class="_ _1c"></span>VER<span class="ff3 lsd ws0">(观察者)—对象行为型模式</span><span class="ls4 ws3"> <span class="_ _21"></span> 194 </span></div><div class="t m0 x4 h4 y39 ff2 fs2 fc0 sc0 ls14 ws13">5.8 ST<span class="_ _1c"></span>A<span class="_ _2"></span>TE<span class="ff3 ls4 ws0">(状态)—对象行为型模式<span class="ff2 ws3"> <span class="_ _2"></span> 201 </span></span></div><div class="t m0 x4 h4 y3a ff2 fs2 fc0 sc0 ls4 ws1">5.9 STRA<span class="_ _2"></span>TEGY<span class="ff3 lsd ws0">(策略)—对象行为型模式</span><span class="ws3"> <span class="_ _24"></span> 208 </span></div><div class="t m0 x4 h4 y3b ff2 fs2 fc0 sc0 ls1b ws15">5.10 TEMPLA<span class="_ _2"></span>TE <span class="_ _25"></span>METHOD<span class="ff3 lsd ws0">(模板方法)—类行为型模式</span><span class="ls4 ws3"> <span class="_ _9"></span> 214 </span></div><div class="t m0 x4 h4 y3c ff2 fs2 fc0 sc0 ls13 wsd">5.1<span class="_ _10"></span>1 VISITOR<span class="ff3 lsd ws0">(访问者)—对象行为型模式</span><span class="ls4 ws3"> <span class="_ _b"></span> 218 </span></div><div class="t m0 x4 h4 y3d ff2 fs2 fc0 sc0 ls4 ws1">5.12 <span class="ff3 ws0">行为模式的讨论</span><span class="ws3"> <span class="_ _6"></span> 228 </span></div><div class="t m0 x5 h4 y3e ff2 fs2 fc0 sc0 ls4 ws1">5.12 <span class="_ _8"></span>1 <span class="ff3 ws0">封装变化</span><span class="ws3"> <span class="_ _7"></span> 228 </span></div><div class="t m0 x5 h4 y3f ff2 fs2 fc0 sc0 ls4 ws1">5.12.2 <span class="ff3 ws0">对象作为参数</span><span class="ws3"> <span class="_ _5"></span> 228 </span></div><div class="t m0 x5 h4 y40 ff2 fs2 fc0 sc0 ls4 ws1">5.12.3 <span class="ff3 ws0">通信应该被封装还是被分布</span><span class="ws3"> <span class="_ _8"></span> 229 </span></div><div class="t m0 x5 h4 y41 ff2 fs2 fc0 sc0 ls4 ws1">5.12.4 <span class="ff3 ws0">对发送者和接收者解耦</span><span class="ws3"> 229 </span></div><div class="t m0 x5 h4 y42 ff2 fs2 fc0 sc0 ls4 ws1">5.12.5 <span class="ff3 ws0">总结</span><span class="ws3"> <span class="_ _a"></span> 231 </span></div><div class="t m0 x2 h4 y43 ff3 fs2 fc0 sc0 ls4 ws0">第<span class="_ _4"> </span><span class="ff2">6<span class="_"> </span></span>章<span class="ff2 ls6"> </span>结论<span class="ff2 ws3"> <span class="_ _5"></span> 232 </span></div><div class="t m0 x4 h4 y44 ff2 fs2 fc0 sc0 ls4 ws1">6.1 <span class="ff3 ws0">设计模式将带来什么</span><span class="ws3"> <span class="_ _5"></span> 232 </span></div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf4" class="pf w0 h0" data-page-no="4"><div class="pc pc4 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/625b1068be9ad24cfafbc19b/bg4.jpg"><div class="t m0 x4 h4 y21 ff2 fs2 fc0 sc0 ls4 ws1">6.2 <span class="ff3 ws0">一套通用的设计词汇</span><span class="ws3"> <span class="_ _5"></span> 232 </span></div><div class="t m0 x4 h4 y22 ff2 fs2 fc0 sc0 ls4 ws1">6.3 <span class="ff3 ws0">书写文档和学习的辅助手段</span><span class="ws3"> <span class="_ _a"></span> 232 </span></div><div class="t m0 x4 h4 y23 ff2 fs2 fc0 sc0 ls4 ws1">6.4 <span class="ff3 ws0">现有方法的一种补充</span><span class="ws3"> <span class="_ _5"></span> 233 </span></div><div class="t m0 x4 h4 y24 ff2 fs2 fc0 sc0 ls4 ws1">6.5 <span class="ff3 ws0">重构的目标</span><span class="ws3"> <span class="_ _a"></span> 233 </span></div><div class="t m0 x4 h4 y25 ff2 fs2 fc0 sc0 ls4 ws1">6.6 <span class="ff3 ws0">本书简史</span><span class="ws3"> <span class="_ _6"></span> 234 </span></div><div class="t m0 x4 h4 y26 ff2 fs2 fc0 sc0 ls4 ws1">6.7 <span class="ff3 ws0">模式界</span><span class="ws3"> <span class="_ _3"></span> 235 </span></div><div class="t m0 x4 h4 y45 ff2 fs2 fc0 sc0 ls15 wse">6.8 Alexander <span class="ff3 ls12 ws0">的模式语言</span><span class="ls4 ws3"> <span class="_ _26"></span> 235 </span></div><div class="t m0 x4 h4 y46 ff2 fs2 fc0 sc0 ls4 ws1">6.9 <span class="ff3 ws0">软件中的模式</span><span class="ws3"> 236 </span></div><div class="t m0 x4 h4 y47 ff2 fs2 fc0 sc0 ls4 ws1">6.10 <span class="ff3 ws0">邀请参与</span><span class="ws3"> <span class="_ _8"></span> 237 </span></div><div class="t m0 x4 h4 y48 ff2 fs2 fc0 sc0 ls4 ws1">6.1<span class="_ _10"></span>1 <span class="ff3 ws0">临别感想</span><span class="ws3"> <span class="_ _27"></span> 237 </span></div><div class="t m0 x2 h4 y49 ff3 fs2 fc0 sc0 ls4 ws0">附录<span class="_ _4"> </span><span class="ff2 ls1c ws16">A </span>词汇表<span class="ff2 ws3"> <span class="_ _17"></span> 238 </span></div><div class="t m0 x2 h4 y4a ff3 fs2 fc0 sc0 ls4 ws0">附录<span class="_ _4"> </span><span class="ff2 ls1d ws17">B </span>图示符号指南<span class="ff2 ws3"> <span class="_ _21"></span> 241 </span></div><div class="t m0 x2 h4 y4b ff3 fs2 fc0 sc0 ls4 ws0">附录<span class="_ _4"> </span><span class="ff2 ls1d ws17">C </span>基本类<span class="ff2 ws3"> <span class="_ _17"></span> 244 </span></div><div class="t m0 x2 h4 y4c ff3 fs2 fc0 sc0 ls4 ws0">参考文献<span class="ff2 ws3"> <span class="_ _3"></span> 249 </span></div><div class="t m0 x2 h4 y51 ff2 fs2 fc0 sc0 ls4 ws0"> </div><div class="t m0 x2 h4 y52 ff2 fs2 fc0 sc0 ls4 ws0"> </div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf5" class="pf w0 h0" data-page-no="5"><div class="pc pc5 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/625b1068be9ad24cfafbc19b/bg5.jpg"><div class="t m0 x6 h3 y53 ff1 fs1 fc0 sc0 ls4 ws0">序 <span class="_"> </span>言 </div><div class="t m0 x2 h4 y54 ff2 fs2 fc0 sc0 ls4 ws0"> </div><div class="t m0 x7 h5 y55 ff3 fs2 fc0 sc0 ls4 ws0">所有结构良好的面向对象软件体系结构中都包含了许多模式。<span class="_ _27"></span>实际上,<span class="_ _27"></span>当我</div><div class="t m0 x2 h5 y56 ff3 fs2 fc0 sc0 ls4 ws0">评估一个面向对象系统的质量时,<span class="_ _1"></span>所使用的方法之一就是要判断系统的设计者是</div><div class="t m0 x2 h5 y57 ff3 fs2 fc0 sc0 ls4 ws0">否强调了对象之间的公共协同关系。在系统开发阶段强调这种机制的优势在于,</div><div class="t m0 x2 h5 y58 ff3 fs2 fc0 sc0 ls4 ws0">它能使所生成的系统体系结构更加精巧、<span class="_ _27"></span>简洁和易于理解,<span class="_ _27"></span>其程度远远超过了未</div><div class="t m0 x2 h4 y59 ff3 fs2 fc0 sc0 ls4 ws0">使用模式的体系结构。<span class="ff2"> </span></div><div class="t m0 x7 h5 y5a ff3 fs2 fc0 sc0 ls1e ws0">模式在构造复杂系统时的重要性早已在其他领域中被认可。特别地,</div><div class="t m0 x2 h4 y5b ff2 fs2 fc0 sc0 ls15 ws18">Christopher Alexander<span class="_ _4"> </span><span class="ff3 ls4 ws0">和他的同事们可能最先将模式语言<span class="_ _27"></span>(<span class="ff2 lsa ws19">pattern language</span><span class="ls1f">)应<span class="_ _28"> </span>用</span></span></div><div class="t m0 x2 h5 y5c ff3 fs2 fc0 sc0 ls4 ws0">于城市建筑领域,<span class="_ _27"></span>他的思想和其他人的贡献已经根植于面向对象软件界。<span class="_ _27"></span>简而言</div><div class="t m0 x2 h5 y5d ff3 fs2 fc0 sc0 ls20 ws0">之,软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途</div><div class="t m0 x2 h4 y5e ff3 fs2 fc0 sc0 ls4 ws0">径。<span class="ff2"> </span></div><div class="t m0 x7 h4 y5f ff3 fs2 fc0 sc0 ls4 ws0">在本书中,<span class="ff2 ls1b ws1a">Erich Gamm<span class="_ _22"></span>a<span class="ff3 ls4 ws0">、<span class="_ _22"></span><span class="ff2 ls1a ws1b">Richard Helm<span class="ff3 ls4 ws0">、<span class="_ _10"></span><span class="ff2">Ra<span class="_ _29"></span>lph Johnson<span class="_"> </span><span class="ff3">和<span class="_ _4"> </span></span><span class="lsb ws1c">John Vlissides<span class="_"> </span></span><span class="ff3">介</span></span></span></span></span></span></div><div class="t m0 x2 h5 y60 ff3 fs2 fc0 sc0 ls4 ws0">绍了设计模式的原理,<span class="_ _2"></span>并且对这些设计模式进行了分类描述。<span class="_ _2"></span>因此,<span class="_ _2"></span>该书做出了</div><div class="t m0 x2 h5 y61 ff3 fs2 fc0 sc0 ls4 ws0">两个重要的贡献:<span class="_ _2a"></span>首先,<span class="_ _2a"></span>它展示了模式在建造复杂系统过程中所处的角色;<span class="_ _2a"></span>其次,</div><div class="t m0 x2 h5 y62 ff3 fs2 fc0 sc0 ls4 ws0">它为如何引用一组精心设计的模式提供了一个实用方法,<span class="_ _1"></span>以帮助实际开发者针对</div><div class="t m0 x2 h4 y63 ff3 fs2 fc0 sc0 ls4 ws0">特定应用问题使用适当的模式进行设计。<span class="ff2"> </span></div><div class="t m0 x7 h5 y64 ff3 fs2 fc0 sc0 ls4 ws0">我曾荣幸地有机会与本书的部分作者一同进行体系结构设计工作,<span class="_ _1"></span>从他们身</div><div class="t m0 x2 h4 y65 ff3 fs2 fc0 sc0 ls4 ws0">上我学到了许多东西,并相信通过阅读该书你同样也会受益匪浅。<span class="ff2"> </span></div><div class="t m0 x7 h4 y66 ff2 fs2 fc0 sc0 ls4 ws0"> </div><div class="t m0 x7 h4 y67 ff2 fs2 fc0 sc0 ls4 ws0"> </div><div class="t m0 x8 h4 y68 ff2 fs2 fc0 sc0 ls10 ws0">Rational <span class="_"> </span><span class="ff3 ls21">软件公司首席科学家</span><span class="ls4 ws1"> Grady <span class="_ _8"></span>Booch </span></div><div class="t m0 x2 h4 y69 ff2 fs2 fc0 sc0 ls4 ws0"> </div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>