设计模式 第一章 引言

将面向对象软件的设计经验作为设计模式记录下来。每一个设计模式系统地命名、解释和评价理了面向对象系统中一个重要的和重复出现的设计。我们的目标是将设计经验以人们能够有效利用的形式记录下来。本书中以编目分类的形式将他们展现出来。

设计模式使人们更方便地复用成功的设计和体系结构,将已证实的技术表述成设计模式可以使新系统开发者更加容易理解其设计思路,就像有机化学中的人名反应。

没完全理解:设计模式帮助你做出有利于系统复用的选择,避免设计损害理了系统复用性。通过提供一个显式类和对象作用关系以及它们之间潜在联系的说明规范。设计模式甚至能够提高已有系统地文档管理和系统维护的有效性。

1.1 什么是设计模式

模式名称(助记名) 问题(包括使用模式必须满足的一系列先决条件,解释了设计问题和问题存在的前因后果) 解决方案 效果

1.2 Smalltalk MVC中的设计模式

三元组mvc 类的模型、视图、控制器(model、view、controller)被用来构建用户界面。

model是应用对象,视图view是他在屏幕上的表示、控制器controller定义用户界面对用户输入的响应方式。

mvc通过建立一个订购、通知协议来分离视图和模型,视图必须保证它的显示正确地反映了模型的状态。一旦模型的数据发生变化,模型将通知有关的视图,每个视图相应地得到了刷新自己的机会。

视图和模型分离的设计可以衍生出更具有普遍性的解决问题方法:将对象分离,使得一个对象的改变能够影响另一些对象,而这个对象并不需要知道那些被影响的对象的细节。这个更一般的设计被描述成observer模式。

嵌套 组合模式(composite)

mvc允许你在不改变视图外观的情况下改变视图对用户输入的响应模式。例如,你可能希望改变视图对键盘的响应方式,或希望使用弹出菜单而不是原来的命令键方式。mvc将响应机制封装在controller对象中。存在着一个controller的类层次结构,使得可以方便地对原有controller做适当改变而创建新的controller。

view使用controller子类的实例来实现一个特定的响应策略。要实现不同的响应策略只要用不同种类的controller实例替换即可。甚至可以再运行时刻通过改变view的controller来改变view对用户输入的响应方式。例如,一个view可以被禁止接收任何输入,只需给它一个忽略输入事件的controller。

view-controller是 strategy模式的一个例子。一个策略是一个表述算法的对象,当你想静态或动态地替换一个算法,或你有很多不同的算法,或算法中包含你想封装的复杂数据结构,这时策略模式是非常有用的。

mvc主要关系还是由observer、composite和strategy三个设计模式给出的。

1.3 描述设计模式

1.4 设计模式的编目

abstract factory :提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

adapter : 将一个类的接口转换成客户希望的另外一个接口。adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

bridge:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

chain of responsibility:为解除请求的发送者和接受者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。

command:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。

composite:将对象组合成树形结构以表示“部分-整体”的乘次结构。composite使得客户对单个对象和复合对象的使用具有一致性。

decorator :动态地给一个对象添加一些额外的职责。就拓展功能而言,decorator模式比生成子类方式更为灵活。

facade:为子系统的一组接口提供一个一致的界面,facade模式定义了一个高层接口,这个接口使得这一子系统更容易使用

factory method:定义一个用于创建对象的接口,让子类决定将哪一个类实例化。factory method使一个类的实例化延迟到其子类。

flyweight:运用共享技术有效地支持大量细粒度的对象。

interpreter fpwgpcmbx

施工中……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值