某学院《设计模式》课题设计开题报告
华南农业大学珠江学院 《设计模式》课题设计开题报告
专
业:____计算机科学与技术_______
班
级:___08 计算机科学与技术 01___ 学
号:
__200830400118____________ 姓
名:___罗会枫__________________ 导
师:___张基温__________________ 题
目:对观察者模式和代理模式的设计
开题日期:2011 年 5 月 27 日
目录
1.对《设计模式》的总体认识或意义
本学期第三周开始接触《设计模式》至今,已有十一周的时间。在这十一周的时间里我本人断断续续的拿起《设计模式》的书籍学习其中的 23 中设计模式。虽然这次学习断断续续,但是对《设计模式》的认识还是蛮深的,也明白了其用于系统或软件开发中的意义。
1.1 总体认识
在《设计模式》中“设计面向对象软件比较困难,而设计可复用的面向对象软件就更加困难。”给我很深的印象。软件的开发使用面向对象不仅要考虑到整个软件框架中成员的如何将他们分类,而且还要考虑到类之间的联系;当使用可复用的面向对象编程的时候,又要考虑到可复用性和可扩展性、可维护性等。
其实,不管是我们开发软件还是系统中要这么考虑,就在平时的练习中考虑到这些问题时,设计时也会遇到这样那样的困难。当然如果平时都没有这么个习惯,那么开发软件或系统时再考虑,那么所遇到的困难就更重。只有在平时的学习中,养成良好的设计习惯,再往后的应用中使用面向对象这个思想才能游刃有余。
设计模式包括创建型模式、结构型模式和行为型模式三大类型。
1 1.1.1 创建型模式
创建型模式有 Abstract Factory、Builder、Factory Method、Prototype、Singleton 五种模式。创建型模式抽象了实例化过程。一个类创建型模式使用继承改变被实例化的类,二一个对象创建型模式将实例化委托给另一个对象。随着现代软件开发越来越依赖于对象复合而不是类继承,创建型模式变得更为重要。
对创建型模式的应用主要考虑两个方面。第一,它们都将关于该系统使用哪些具体的类的信息封装起来。第二,它们隐藏了这些类的实例是如何被创建和放在一起的。整个系统关于这些对象所知道的是由抽象类所定义的接口。
2 1.1.2 结构型模式
结构型模式涉及到如何组合类和对象以获得更大的结构。结构型类模式采用继承机制来组合接口或实现。而结构型对象模式不是对接口和实现进行组合,而是描述了如何对一些对象 进 行 组 合 , 从 而 实 现 新 功 能 的 一 些 方 法 。
结 构 型 模 式 主 要 有Adapter,Bridge,Composite,Decorator,Facade,Flyweight,Proxy 这八中模式。
3 1.1.3 行为模式
行为模式有以下十一种,包括 Interpreter(解释器),Template Method(模板方法),Chain of Responsibility(职责链),Command(命令),Iterator(迭代器),Mediator(中介者),Memento(备忘录),Observer(观察者),State(状态),Strategy(策略),Visitor(访问者)。
行为模式涉及到算法和对象间职责的分配。行为模式不仅描述对象或类的模式,还描述它们之间的同学模式。
行为类模式使用继承机制在类间分派行为。代表是 Template Method(模板方法)和Interpreter(解释器)。
行为对象模式适用对象复合而不是继承。一些行为对象模式描述了一组对等的对象怎样相互协作以完成其中任一个对象都无法单独完成的任务。Mediator(中介者)在对等对象间引入一个 mediator 对象以避免这种情况的出现。mediator 提供了松耦合所需的间接性。
Chain of Responsibility(职责链)提供更松的耦合。Observer(观察者)模式定义了并支持对象间的依赖关系 这 23 种模式中个人认为最难理解的是访问者、备忘录、适配器、外观、迭代器、观察者;而工厂模式几乎在每一个设计模式中都会现身其中,所以工厂模式是最基本的设计模式,也是所有设计模式的基础。在实际中,工厂方法模式、观察者模式、外观模式、适配器、策略模式又是最经常使用,对软件或系统的开发是相对最好的模式。
设计模式的学习是“冰冻三尺非一日之寒”只有经常使用你才能更好的掌握。当然这些设计模式也并不是完美的,每个都有自己的优缺点,在实际应用中要综合各方面的因素选择合适的模式进行开发软件或系统。在这里就不阐述其中的优缺点。
1.2 实际开发中的意义 1 1.2.1 对于个人的意义
当你对设计模式有了一定的认识和掌握,而且你在日后的软件或系统的开发中时常使用到,那么你就会形成一种良好的习惯。这种习惯会使你在 IT 行业有很好的立足之地。对于你个人的思维能力也是一个大的提升。
2 1.2.2 对软件或系统的实际意义
在软件或系统的开发过程中使用可复用的面向对象设计模式,有利于提高软件或是系统的可复用性、可维护性、适用性、可扩展性。
2.观察者模式 2.1 对观察者模式的认识 1 2.1.1 定义
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
2 2.1.2 认识
观察者模式就类似如这么一个例子,高中或初中的时候,一个学生在课室外的楼梯处放哨,一旦有老师过来就即刻通知课室的其他同学。其他同学接到通知即刻变得认真学习。
3 2.1.3 适用性
·当一个抽象模型有两个方面,其中一个方面依赖于另外一方面。将这两者封装在独立的对象中以使它们可以各自独立地改变和复用。
·当对一个对象的改变需要同时改变其它对象。而不知道具体有多少对象有待改变。
·当一个对象必须通知其它对象,而它又不能假定其它对象是谁。换言之,你不希望这些对象是紧耦合的。
4 2.1.4 对本模式的构思
对于观察者模式,我的构思主要是利用 MVC 模式针对某个系统或是软件中某个操作的
完成会触发或引起某些对象的改变来设计本模式。当管理器 C(客户端)改变时,触发模型M(即 subject)改变,其改变将反映在视图 V(即 observers)上。下面将以“电视报纸”为例。
3.代理模式 3.1 对代理模式的认识 1 3.1.1 定义
为其他对象提供一种代理以控制对这个对象的访问。
2 3.1.2 认识
代理模式有以下几种形式:
·远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。
·虚拟代理,是根据需要创建开销很大的对象。通过它来存放实例化需要很长的时间的真实对象。
·安全代理,用来控制真实对象访问时的权限。
·智能指引,是指当调用真实的对象时,代理处理另外的一些事。
其实代理模式就是在访问对象时引入一定程度的间接性,使得代理模式可以存在多种的用途。例如我们打开 HTML 网页,我们使用数据库的访问权限等。
3 3.1.3 适用性
在需要用比较通用和复杂的对象指针代理简单的指针的时候,使用代理模式。
·对指向实际对象的引用计数,这样当该对象没有引用时,可以自动释放它。
·当第一次引用一个持久对象时,将它装入内存。方便下次使用。
·在访问一个实际对象前,检查是否已经锁定了它,以确保其他对象不能改变它。
4 3.1.4 对本模式的构思
对于代理模式,我的构思是以远程代理为主设计某一个对象在不同的地址空间提供局部代表。目的是减轻某个对象被访问的频繁度,以及不至于软件或系统的某个对象被同时访问时起冲突发生错误,导致软件或系统崩溃。
4.工作进度安排 以本人本学期的进程为基础制定本课题设计的进度安排,基本情况如下表 1 所示:
工作进度安排 表 1 开始时间 结束时间 任务 2011-5-28 2011-5-31 完成两模式代码部分 2011-6-5 2011-6-7 完成设计报告初终稿 2011-6-13 2011-6-15 最后复检和提交报告 上表只是大致计划,本人将会按本表执行,当然特殊问题除外。
上一篇:数字化课题结题报告