设计模式——Java语言中的应用

副标题:无

作   者:结城浩著;博硕文化译

分类号:

ISBN:9787113064563

微信扫一扫,移动浏览光盘

简介

  本书是一本Design Pattern的入门书,书中以浅显易懂的语言逐一说明了GoF的23个Design Pattern,让初次学习面向对象的读者也能立即掌握。在本书中不会看到死板的理论型文章,以Java语言写出书中各Pattern的范例程序,可以直接在计算机上运行,便于读者深入体会和应用。学习设计Pattern不仅是为了将来做准备,而且有助于从另一个全新角度重新审视我们平时编写的程序,提高软件的复用性、扩展性,这才是设计Pattern的真正意义,也是本书理论与实例相结合的目的。   

目录

第0章 漫谈uml

uml

类图

类和层次的关系

接口与实现

聚合

存取控制

类间的关联性

顺序图

处理流程和对象间的协调

开始学习designpatterns之前

designpatterns不等于类函数库

不过,类函数库中确实用到design patterns

不要认为程序范例已经是完成品

图不能只是看,要仔细解读

自己仔细琢磨范例

了解角色功能——白雪公主给谁演

第1部分 先熟悉设计panern

第1章 iterator——迭代器

iterator pattem

.程序示例

aggregate接口

iterator接口

book类

bookshelf类

bookshelfiterator类

main类

iteratorparem的所有参与者

扩展自我视野的提示

无论实现结果如何,都能使用iterator

抽象类、接口实在很难搞

aggregate与iterator的对应

“下一个”容易搞错

“最后一个”也容易错

一个以上的iterator

各种iterator

不需要deletelterator

相关parem

重点回顾

练习题

第2章 adapteler(适配器)——换个包装再度利用

adapter parem

程序示例(1) (继承)

banner类

print接口

printbanner类

main类

程序示例(2) (委托)

print类

printbanner类

adapter parem的所有参与者

扩展自我视野的提示

什么时候用

就算没有源程序也无妨

版本更新与兼容性

类差别太大

相关pattem

重点回顾

练习题

第2部分 万事交给子类

第3章 template method(模板方法)——实际处理就交给子类

template method pauem

何谓模板(template)

template method pattem是什么

程序示例

地sbstractdisplay类

chardisplay类

stringdisplay类

main类

template method pattem的所有参与者

扩展自我视野的提示

逻辑可共享

父类跟子类的连续性

子类应视同父类

相关pattem

进阶说明:类层次与抽象类

父类对子类的要求

抽象类的意义

父类跟子类之间的协调

重点回顾

练习题

第4章 factory method(工厂方法)——

建立对象实例交给子类

factory method pattem

程序示例

product类

factory类

idcard类

idcardfactory类

main类

factory method pattem的所有参与者

扩展自我视野的提示

框架与内容

产生对象实例——方法的实现方式

pattem利用与程序开发工程师之间的沟通

相关pattem

重点回顾

练习题

第3部分 建立对象实例

第5章 singleton(单件)——惟一的对象实例

singleton parem

程序示例

singleton类

main类

singleton parem的所有参与者

扩展自我视野的提示

设限的理由

惟一对象实例产生的时间点

相关parem

重点回顾

练习题

第6章 prototype(原型)——复制建立对象实例

prototype parem

程序示例

product接口

mariager类

messagebox类

underlinepen类

main类

prototype parem的所有参与者

扩展自我视野的提示

难道真的不能利用类来建立对象实例吗

类名是一种束缚

相关parem

深入说明:clone方法和java.1ang.cloneable接口

java语言的c10ne

clone方法是在哪里定义

c10neable所要求的方法是什么

clone方法做的是浅拷贝(shallowcopy)

重点回顾

练习题

第7章 builder(生成器)——组合复杂的对象实例

builder pattern

程序示例

builder类

director类

textbuilder类

htmlbuilder类

main类

builderparem的所有参与者

相关pattern

扩展自我视野的提示

谁知道哪个部分

在设计时该决定哪些事、又不该决定哪些事

源代码的解读与修改

重点回顾

练习题

第8章 abstract factory(抽象工厂)——

把相关零件组合成产品

abstract factory pattem

程序示例

抽象零件:item类

抽象零件:link类

抽象零件:tray类

抽象产品:page类

抽象工厂:factory类

利用工厂把零件组合成产品:main类

具体工厂:listfactory类

具体零件:listlink类

具体零件:listtray类

具体产品:listpage类

在程序示例中新增其他的具体工厂

具体工厂:tablefactory类

具体零件:tablelink类

具体零件:tabletray类

具体产品:tablepage类

abstract factory pattern的所有参与者

扩展自我视野的提示

新增具体工厂尤如探囊取物

新增零件很有难度

相关pattern

深入说明:各种建立对象实例的手段

重点回顾

练习题

第4部分 切割性思考

第9章 bridge(桥接)——分成功能层次和实现层次

bridge pattern

类层次的两大责任

程序示例

功能的类层次:display类

功能的类层次:countdisplay类

实现的类层次:displaylmpl类

实现的类层次:stringdisplaylmpl类

main类

bridge pattern的所有参与者

扩展自我视野的提示

先区分再扩充就很轻松

继承是生死不离、委托是潇洒分手

相关pattern

重点回顾

练习题

第10章 strategy(策略)——把算法整个换掉

strategypauern

程序示例

hand类

strategy接口

winningstrategy类

probstrategy类

player类

main类

strategyparem的所有参与者

扩展自我视野的提示

为什么要特地建立strategy参与者

执行时也可切换

相关parem

重点回顾

练习题

第5部分 一视同仁

第11章 composite(组成)——对容器和内容一视同仁

compositepattern

程序示例

entry类

file类

directory类

filetreatmentexception类

main类

compositeparern的所有参与者

扩展自我视野的提示

单、复数的一视同仁

add放在哪里

递归结构随时都会出现

相关pattern

重点回顾

练习题

第12章 decorator(装饰)——对装饰和内容一视同仁

decorator pattem

程序示例

display类

sbinsdisplay类

border类

sideborder类

fulmorder类

main类

decorator pattem的所有参与者

扩展自我视野的提示

可穿透的接口(apl)

可新增功能但内容不变

可新增动态功能

即使只有简单的种类规划,也可增加多种功能

java.io包和decorator pattem

小类多了一点

相关pattern

深入说明:继承和委托的一视同仁

继承——对子类和父类一视同仁

委托——对自己和委托对象一视同仁

重点回顾

练习题

第6部分 在结构中穿梭来去

第13章 visitor(访问者)——在结构中穿梭还同时做事

ⅵsitor pattem

程序示例

ⅵsitor类

acceptor接口

entry类

file类

directory类

listvisitor类

filetreatmentexception类

main类

visitor和acceptor两边彼此调用

visitor parem的所有参与者

扩展自我视野的提示

双重调度(double dispatch)

为什么要搞得这么复杂

theopen-closedprinciple——扩充时开放、修改时关闭

新增concretevisitor参与者?简单

新增concreteacceptor参与者?复杂

visitor要怎样做才能进行处理

相关pattern

重点回顾

练习题

第14章 chain of responsibility(职责链)——责任转送

chain of responsibility责任转送

程序示例

trouble类

support类

nosupport类

limitsupport类

oddsupport类

specialsupport类

main类

chain of responsibility pattern的所有参与者

扩展自我视野的提示

让要求跟处理要求两者间的结合关系不会太紧密

机动性改变连锁形态

能更专心在自己的工作岗位上

转送会不会导致处理变慢

相关pattem

重点回顾

练习题

第7部分 简单最好

第15章 facade(外观)——单一窗口

facade单一窗口

程序示例

database类

htmlwriter类

pagemaker类

main类

facadeparem的所有参与者

扩展自我视野的提示

facade参与者到底在做什么事

facadepa~em的递归应用

程序设计师拒绝使用facade的理由——敏感的心理因素

相关parem

重点回顾

练习题

第16章 mediator(中介者)——只要面对一个顾问

mediator parem

程序示例

mediator接口

colleague接口

colleaguebutton类

colleaguetextfield类

colleaguecheckbox类

loginframe类

main类

mediatorpattem的所有参与者

扩展自我视野的提示

当分散变成灾难时

通讯路径数量暴增

哪些可以再利用

相关pauem

重点回顾

练习题

第8部分 管理状态

第17章 obse~el'(观察者)——通知状态变化…

observerpattern

程序示例

observer接口

numbergenerator类

randomnumbergenerator类

digitobserver类

graphobserver类

main类

observer parern的所有参与者

扩展自我视野的提示

这里也可对换

observer的顺序

observer的行为影响subiect时

如何处理更新的提示

“通知”的意义重于“观察”

model/view/controller(mvc)

补充说明:java.util.observer接口

相关parern

重点回顾

练习题

第18章 memerlto(备忘录)——存储状态

memento parern

程序示例

memento类

gamer类

main类

memento parern的所有参与者

扩展自我视野的提示

2种接口(apl)与存取控制

memento可以有几个

memento有没有使用期限

caretaker参与者跟originator参与者区隔使用的意义

相关pattern

重点回顾

练习题

第19章 state(状态)——以类表示状态

statepattern

程序示例

金库保安系统

不使用state pattern的虚拟程序代码

使用state pattern的虚拟程序代码

state接口

daystate类

nightstate类

context接口

safeframe类

main类

statepattem的所有参与者

扩展自我视野的提示

分割统合

有此状态才会有的处理

状态迁移该由谁管

不会有自我矛盾

新增状态易如反掌

变化万千的对象实例

相关pattem

重点回顾

练习题

第9部分 精简不浪费

第20章 flyweijht(享元)——有相同的部分就共享

采取精简政策

flyweight pauem

程序示例

bigchar类

bigcharfactory类

bigstring类

main类

flyweight parem的所有参与者

扩展自我视野的提示

影响会传到所有相关位置

intrinsic和extrinsic

管理中的对象实例不会被视为垃圾收集

非内存部分的记录

相关pattem

重点回顾

练习题

第21章 pfoxy(代理)——要用再建立

proxypattem

程序示例

printer类

printable接口

printerproxy类

main类

proxy parem的所有参与者

扩展自我视野的提示

利用代理提高处理速度

不能让代理和本人合二为一吗

代理和委托

穿透性

http proxy

各种proxy

相关parem

重点回顾

练习题

第10部分 用类来表示

第22章 command(命令)——将命令写成类

command parem

程序示例

command接口

macrocommand类

drawcommand类

drawable接口

drawcanvas类

main类

command parem的所有参与者

扩展自我视野的提示

命令应该要有的信息是什么

存储记录

转换器

相关parem

重点回顾

练习题

第23章 interpreter(解释器)——以类来表达语法规则

interpreter parem

迷你语言

迷你语言的命令

迷你程序示例

迷你语言的语法

终点表达式与非终点表达式

程序示例

node类

programnode类

commandlistnode类

commandnode类

repeatcommandnode类

primitivecommandnode类

context类

parseexception类

main类

lhterperter pattern的所有参与者

扩展自我视野的提示

还有其他不同的迷你语言吗

略过/读入

相关pattern

重点回顾和最后的叮咛

练习题

附 录

附录a练习题的解答

附录b gof的设计panern分类


已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

设计模式——Java语言中的应用
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    loading icon