java设计模式笔记.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
java设计模式笔记

Java设计模式 接口类模式 1.适配器(Adapter)模式: 使用了不同接口的类所提供的服务是客户端所提供其期望的接口 类的适配器 适配器使我们重用一个类,以来满足客户的需要。 当客户通过接口表达需求时,通常可以创建一个实现该接口的类,并且该类继承现有类,这就是类适配器 对象适配器 当客户没有提供接口的时候,我们可以使用对象适配器。 通过创建一个新的客户端子类,它将使用现有类的实例。如果我们不需要(不用)重写客户端可能调用的方法时,对象适配器可能就有一些风险。(原因:仅仅是因为方法没有使用final声明,无法防止子类去重写) 2.外观(Facade)模式 外观模式的意图是为子系统提供一个接口,以便使用者使用 外观模式的职责主要是为子系统提供便捷的访问方式,以便完成系统的重构 示例类和外观类区别 示例类可以独立运行,不可以被重用,仅仅展示使用子系统的方法 外观类可以被配置,重用,提供了高层次的接口,使得子系统更容易被使用 示例类用于展示如何使用类和子系统 外观类用于为子系统提供一个接口,以便它的使用,外观类的方法可能全是静态方法 3.合成(Composite)模式 合成模式的意图是为了保证客户端调用子对象和组对象的一致性 图也可以说是树的情况 存在一个没有任何根节点的引用 其他每个节点都只有一次引用的父节点 合成模式一个组合对象可以包含单对象或者其他组合对象 合成模式组合对象和单对象共享同一个接口 4.桥接(Bridge)模式 桥接模式的意图是将抽象和抽象方法的实现相互分离来实现解耦,以便两者可以相互独立地变化 握手协议:即一个对象,承担了两个或以上具有不同变化方向的职责。它实际违背了单一职责原则,即一个对象只能有一个引起它变化的原因。此时,我们需要分离职责,并对分离出去的职责进行抽象,再以组合的方式与原有对象进行协作。 驱动程序是最为常见的桥接模式范例,例如数据库驱动。数据库驱动程序很好地体现了在运用桥接模式时,需要对结构进行权衡的本质。 职责类模式 1.单例(Singleton)模式 单例模式:为了确保一个类只有一个实例,并为它提供一个全局访问点 怎样才能阻止其他开发人员创建新的实例 1.由于每次使用new关键字来实例化TaskManager类都会产生一个新对象,为了确保TaskManager的唯一性,我们需要禁止外部直接使用new来创建对象,因此需要将TaskManager的构造函数设置为private,代码如下 Private TaskManager(){} 既然无法使用new外部创建对象,那么我们可以内部创建对象,可见性对外有效。因此,我们可以在TaskManager内部创建并且保存这个唯一实例。为了让外界可以访问这唯一的实例,需要在TaskManager中定义一个静态的TaskManager类型的私有成员变量。代码如下 Private static TaskManager tm = null; 为了保证成员变量的封装性,所以我们将其设置为私有的。但外界何时实例化该成员变量呢,答案是添加一个公有的静态方法,代码如下 Public static TaskManager getInstance(){ If(tm == null){ tm = new TaskManager(); } Return tm; } 延迟初始化:仅在第一次使用它时才初始化。 对象具有唯一性,并不意味着使用了单例模式。 2.观察者(Observer)模式 观察者模式的意图是在多个对象之间定义一对多的依赖关系,当一个对象的状态发生的改变时,会通知它所依赖的对象,并根据新状态做出一些改变。 观察者模式经常出现在GUI组件中,它是java GUI 类库的基本模式。 MVC模式也用到了观察者模式。 3.调停者(Mediator)模式 调停者模式的意图是定义一个对象,封装一组对象间的交互,从而降低对象间的耦合度,避免了对象间的显示引用,并且能够独立地改变对象的行为。 松耦合:减少对象之间的直接交互。 4.代理(Proxy)模式 代理模式的意图是通过一个代理或者占位符控制对该对象的访问。 为什么要使用代理模式? 有的对象加载时间过长,有的对象运行在其他计算机上,或者需要拦截发送到对象的消息等。 代理模式的角色与结构 Subject:抽象目标角色,声明真实对象与代理对象的共同接口。 Proxy:代理角色,内部包含对真实目标对象的引用。 realSubject :真实目标角色,是客户端真正要交流的对象,需要被代理。 代理模式的核心代码 Public class Proxy implements Subject { Private RealSubjcet realSubject = new RealSubject(); Public void preReques

文档评论(0)

almm118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档