Thinking in Patterns中文版
目录
译序............................................................................................................................................I
目录..........................................................................................................................................II
前言...........................................................................................................................................1
绪论...........................................................................................................................................2
Y2K 综合症...........................................................................................................................2
上下文和组合(CONTEXT AND COMPOSITION)..................................................................3
关于“已检测异常(CHECKED EXCEPTIONS)”.................................................................3
模式概念...................................................................................................................................5
什么是模式?........................................................................................................................5
模式范畴 (PATTERN TAXONOMY)......................................................................................6
设计原则...............................................................................................................................7
模式分类...............................................................................................................................8
开发所面临的挑战................................................................................................................9
单元测试...............................................................................................................................9
测试代码的位置..............................................................................................................10
简单化(SIMPLIFYING IDIOMS)...................................................................................11
信使(MESSENGER)..........................................................................................................11
集合型参数(COLLECTING PARAMETER)..........................................................................12
对象数量(OBJECT QUANTITY)...................................................................................14
单件(SINGLETON)............................................................................................................14
练习.................................................................................................................................16
对象池(OBJECT POOL).....................................................................................................16
练习.................................................................................................................................19
对象去耦(OBJECT DECOUPLING)..............................................................................20
代理:替另外一个对象打点一切......................................................................................20
用Proxy模式实现PoolManager....................................................................................22
动态代理(Dynamic Proxies)......................................................................................25
状态模式:改变对象的行为..............................................................................................27
迭代器:分离算法和容器..................................................................................................33
类型安全的迭代器..........................................................................................................33
练习.....................................................................................................................................35
分解共同性(FACTORING COMMONALITY)............................................................36
策略模式(STRATEGY):运行时刻选择算法.................................................................36
POLICY模式:泛化的STRATEGY模式...............................................................................38
模板方法(TEMPLATE METHOD)......................................................................................38
练习.....................................................................................................................................40
封装创建(ENCAPSULATING CREATION).................................................................41 http://blog.dreambrook.com/lxwde ii
目录
简单工厂方法(SIMPLE FACTORY METHOD)....................................................................41
多态工厂(POLYMORPHIC FACTORIES).............................................................................43
抽象工厂(ABSTRACT FACTORIES)...................................................................................46
练习.....................................................................................................................................50
特化创建(SPECIALIZED CREATION)........................................................................51
原型模式(PROTOTYPE)...................................................................................................51
生成器(BUILDER)............................................................................................................51
练习.....................................................................................................................................55
太多(TOO MANY)...........................................................................................................56
享元模式(FLYWEIGHT):太多对象..................................................................................56
装饰模式(DECORATOR):太多类..................................................................................58
基本decorator结构.........................................................................................................59
一个关于咖啡的例子......................................................................................................59
每种组合对应一个类......................................................................................................59
Decorator方法.................................................................................................................63
折衷(Compromise).....................................................................................................68
其它考虑..........................................................................................................................73
练习.................................................................................................................................74
连接不同类型..........................................................................................................................75
适配器(ADAPTER)...........................................................................................................75
桥接(BRIDGE)..................................................................................................................78
练习.....................................................................................................................................84
灵活的结构..............................................................................................................................86
组合模式(COMPOSITE)...................................................................................................86
系统解耦(SYSTEM DECOUPLING).............................................................................88
观察者模式(OBSERVER).................................................................................................88
观察花朵..........................................................................................................................89
关于observers的一个可视化的例子.............................................................................93
中介者(MEDIATOR)........................................................................................................96
练习.....................................................................................................................................97
降低接口复杂度......................................................................................................................98
外观模式(FAÇADE).........................................................................................................98
PACKAGE作为FACADE的变体............................................................................................99
算法分解(ALGORITHMIC PARTITIONING)..........................................................100
命令模式(COMMAND):运行时刻选择操作.................................................................100
练习...............................................................................................................................102
职责链模式(CHAIN OF RESPONSIBILITY)......................................................................102
练习...............................................................................................................................106
外部化对象状态(EXTERNALIZING OBJECT STATE)...........................................107 http://blog.dreambrook.com/lxwde iii
目录
备忘录模式(MEMENTO)...............................................................................................107
复杂的交互(COMPLEX INTERACTIONS)...............................................................108
多重分派(MULTIPLE DISPATCHING)..............................................................................108
访问者模式(VISITOR),多重分派的一种......................................................................110
练习...................................................................................................................................113
多个编程语言(MULTIPLE LANGUAGES)................................................................115
INTERPRETER模式的动机..................................................................................................115
PYTHON概览......................................................................................................................116
内置容器........................................................................................................................117
函数...............................................................................................................................118
字符串............................................................................................................................119
类...................................................................................................................................120
创造一门语言....................................................................................................................124
控制解释器(CONTROLLING THE INTERPRETER)............................................................127
提交数据(Putting data in).........................................................................................128
取出数据(Getting data out)......................................................................................134
多个解释器(Multiple interpreters)...........................................................................138
通过JYTHON控制JAVA....................................................................................................139
内部类(Inner Classes)..............................................................................................143
使用JAVA库......................................................................................................................143
继承Java库里的类(Inheriting from Java library classes).......................................144
使用JYTHON创建JAVA类................................................................................................146
编译来自Python代码的Java类..................................................................................151
JAVA-PYTHON扩展(JPE)..............................................................................................152
总结...................................................................................................................................152
练习...................................................................................................................................153
复杂系统的状态(COMPLEX SYSTEM STATES)......................................................154
状态机(STATEMACHINE)..............................................................................................154
练习...............................................................................................................................164
表驱动的状态机(TABLE-DRIVEN STATE MACHINE)....................................................164
State类...........................................................................................................................166
迁移条件(Conditions for transition).........................................................................167
迁移动作(Transition actions)...................................................................................167
表结构(The table).....................................................................................................167
基本状态机(The basic machine)..............................................................................168
简单的自动售货机(Simple vending machine)........................................................169
测试自动售货机(Testing the machine)...................................................................175
工具...................................................................................................................................176
用于表驱动(TABLE-DRIVEN)的代码:通过配置达到灵活性....................................176
通过匿名内部类来实现表驱动....................................................................................176
练习...................................................................................................................................176
模式重构(PATTERN REFACTORING)......................................................................178 http://blog.dreambrook.com/lxwde iv
目录
模拟一个废品回收器(SIMULATING THE TRASH RECYCLER)........................................178
改进现有设计(IMPROVING THE DESIGN)......................................................................182
“多弄些对象(Make more objects)”..........................................................................182
根据原型创建对象的模式................................................................................................185
Trash的子类..................................................................................................................189
从一个外部文件解析Trash..........................................................................................191
使用原型创建做废品回收(Recycling with prototyping)........................................194
ABSTRACTING USAGE..........................................................................................................196
多重分派(MULTIPLE DISPATCHING)..............................................................................199
实现双重分派(Implementing the double dispatch).................................................200
访问者(VISITOR)模式...................................................................................................207
一个使用反射实现的Decorator...................................................................................210
耦合的更厉害了?........................................................................................................216
RTTI 果真有害么?..........................................................................................................216
总结...................................................................................................................................219
练习...................................................................................................................................221
项目.......................................................................................................................................222
老鼠和迷宫........................................................................................................................222
其它关于迷宫的资源....................................................................................................228
XML修饰器(XML DECORATOR)................................................................................228
附录:工具............................................................................................................................229
ANT扩展............................................................................................................................229
ARRAY UTILITIES................................................................................................................230
struts2 jar 包
struts2 相关的一些jar包
common ,freemarker....
Towards Cross Media Document Annotation
Towards Cross Media Document Annotation<br><br>文件<br>注释