- 1、本文档共174页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7 面向对象设计 * Template Method 模板方法 7 面向对象设计 * 应用举例:Java Applet public class MyApplet extends Applet{ String message; public void init() { message = Hello; repaint(); } public void start() { message = Now Im starting up; repaint(); } public void stop() { message = Im being stopped; repaint(); } public void destroy() {} public void paint(Graphics g) { g.drawString(message, 5, 15); } }; 7 面向对象设计 * Observer(观察者)模式 例子:“网络聊天室” 只要是女孩,一进入聊天室,所有的男孩都会立刻知晓,并做出反应(比如打招呼) 代码 详见:“ChatRoom” 7 面向对象设计 * Observer(观察者)模式 原理 7 面向对象设计 * Observer(观察者)模式 结构 7 面向对象设计 * Observer(观察者)模式 观察者模式 = 订阅 + 广播 类比:邮局报刊订阅 你向邮局订阅报刊 邮局把你加入订阅人列表 每当有新的报纸,邮局会及时送到每个订阅人手中 当你不需要该报纸时,你向邮局退订,从此邮局不再给你送报纸 7 面向对象设计 * 你向邮局申请订阅报纸 邮局把你列入 订阅者名单 新的一期报纸到了, 邮递员会按照名单逐一送达 7 面向对象设计 * 你向邮局退订报纸 邮局把你从订阅 者名单中删除 你再也不会收到报纸 7 面向对象设计 * Observer(观察者)模式 意图 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新 适用性 当一个抽象模型有两个方面,其中一个方面依赖于另一方面。将这二者封装在独立的对象中以使它们可以各自独立地改变和复用 当对一个对象的改变需要同时改变其它对象,而不知道具体有多少对象有待改变 当一个对象必须通知其它对象,而它又不能假定其它对象是谁 7 面向对象设计 * Observer(观察者)模式 应用举例1 MVC(Model/View/Control)模式 7 面向对象设计 * Observer(观察者)模式 应用举例2:Java中的ActionListener 7 面向对象设计 * 设计模式和设计原则 设计原则 开-闭:增加程序的功能时,不应该改动原有代码,只要增加新的代码即可 封装可变性:限制变化的影响范围 组合优先:优先使用组合,而不是继承 依赖倒置:依赖抽象,而不是具体 针对接口编程:用抽象类来声明变量等 迪米特法则:耦合尽量松散 接口隔离:一个类只做一件事情 7 面向对象设计 * 设计模式和设计原则 设计模式 设计模式是在实践中具体如何贯彻设计原则的通用方案 桥梁(Bridge) 策略(Strategy) 工厂方法(Factory Method) 适配器(Adapter) 命令(Command) 观察者(Observer) 多个模式的组合:MVC 7 面向对象设计 * 设计模式:参考资料 《设计模式:可复用面向对象软件的基础》 gof著 最权威 但是比较难懂 7 面向对象设计 * 设计模式:参考资料 《设计模式解析》 Alan Shalloway著 比较通俗 适合初学者 7 面向对象设计 * Fa?ade(门面)模式 Fa?ade V.S. Adapter 共同点:改变接口 不同点:目的不同 Fa?ade目的在于简化接口 Adapter目的在于适配接口,以便新老系统可以协同工作 7 面向对象设计 * 设计原则:迪米特法则 门面模式对迪米特法则的体现 门面模式创造出一个门面对象 将客户端所涉及的属于内部类的数量减到最少 客户只需要和一个门面对象打交道 7 面向对象设计 * 设计原则:迪米特法则 迪米特法则在详细设计中的体现 尽量降低成员的访问权限 public - protected - private 限制局部变量的有效范围 变量要用到的时候才去声明它 代码更好懂(一看就知道这个变量是什么类型) 该变量不容易被其它代码误改 for (int i=0; in; i++) ... 7 面向对象设计 * 设计原则:接口隔离原则 角色的合理划分 一个接口应当简单的只代表一个角色 接口污染 过于臃肿的接口是对接口的污染 不要把没什么关系的接口合并在一起 设计原则8:接口隔离原则 一个类对另一个类的依赖应当建立
文档评论(0)