`
- 浏览:
112989 次
- 性别:
- 来自:
长沙
-
设计模式3
适配器模式
适配器模式就是将两个不兼容的类纠合在一起使用,它需要有被适配者和适配器两个身份,由于适配器类是源的一个子类,因此可以在适配器中置换掉源的一些方法。
例如windows操作系统中的快捷方式,其实就是一个适配器的例子。
下面关于适配器模式的应用
先定义一个接口
Public interface Operation{
Public void Activated();
Public void closing();
Public void deactivated();
Public void deiconified();
Public void iconified();
Public void opened();
}
Operation 类为被适配者,在这个接口中声明了多个方法,每个方法提供不同的功能;当我们需要实现这个类的时候、必须全部实现这个接口中的全部方法。对于使用者而言如果实现Operation接口中的某个或某几个方法时,其他的方法也必须同时给出实现。
Public abstract class Adapter implements Operation{
Public void Activated(){}
Public void closed(){}
Public void closing(){}
Public void deactivated(){}
Public void deiconified(){}
Public void incoified(){}
Public void iconified(){}
Public void opened(){}
}
Adapter 类实现了operation接口,在adapter类中、给出了operation接口中的全部方法实现;给出这些实现后、我们可以认为是adaptor对operation进行了适配 ,这个适配体现在当客户端需要给出某个具体的方法实现时、可以不必理会无关的方法;让实现变得更为轻便。这一点在匿名内部类中体现得非常明显。
应用时、调用具体的方法就好了
Adaptor adaptor = new Adaptor(){
Public void closing(){}
}
代理模式
所谓代理、就是一个人或一个机构代表另一个人或另一个机构采取行动;而代理对象可以在客户端和目标对象之间起到中介的作用。
代理模式是给某一个对象提供一个代理对象,并由代理对象控制原对象的引用。
应用:
先定义一个抽象类
Public abstract class Subject{
Public abstract void deleteSubject();
}
然后在继承类中实现具体方法
Public class RealSubject extends Subject{
Public abstract void deleteSubject(){
//具体的实现方法
}
}
由于deleteSubject操作的敏感性,如果需要在执行这个方法之前执行一些前处理和后处理的工作如权限过滤等;那就要在真实主题RealSubject被访问之前、执行一些代理操作;而代理类就负责执行这一过程。
Public class ProxySubject extends Subject{
RealSubject realsubject;
Public void deleteSubject(){
//前处理方法
If(!validatePermission()){
Throws new Runtime Exception(“对不起、你没有此权限”);
}
realsubject.deleteSubject();
//后处理方法
Clear();
}
}
在ProxySubject类中,直接继承了Subject抽象类、同RealSubject类一样;ProxySubject需要实现Subject中的方法deleteSubject();由于需要对RealSubject进行一些代理操作;在ProxySubject类中的deleteSubject()方法中,直接调用了RealSubject类中的deleteSubject()方法。并在这个方法执行前、进行了验证。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
研磨设计模式3
1.2 Smalltalk MVC中的设计模式 3 1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象接口 9 1.6.4 描述对象...
研磨设计模式带书签 研磨设计模式带书签 研磨设计模式带书签 研磨设计模式带书签 研磨设计模式带书签 研磨设计模式带书签 研磨设计模式带书签 研磨设计模式带书签 研磨设计模式带书签
1.2 smalltalk mvc中的设计模式 3 1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象接口 9 1.6.4 ...
1.2 Smalltalk MVC中的设计模式 3 1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象接口 9 1.6.4 ...
人人都懂设计模式 设计模式是软件开发中的一种解决方案,它提供了一种通用的设计思想和方法论,可以帮助开发者更好地设计和实现软件系统。设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。 在本书中...
1.2 Smalltalk MVC中的设计模式 3 1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象接口 9 1.6.4 描述对象...
1.2 Smalltalk MVC中的设计模式 3 1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象接口 9 1.6.4 描述对象...
GOF(Gang of Four)设计模式,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位专家在他们的著作《设计模式:可复用面向对象软件的基础》中提出,被誉为设计模式的经典之作。本资源包含了GOF设计...
《Head First 设计模式》与《Java设计模式(第2版)》是两本非常重要的IT书籍,专注于软件开发中的设计模式。设计模式是解决软件设计中常见问题的经验总结,它们提供了一种标准的方法来处理特定场景下的问题,使得代码...
1.2 Smalltalk MVC中的设计模式 3 1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象接口 9 1.6.4 描述对象...
在计算机科学领域,设计模式是软件工程中用于解决特定问题的一般性方案,它们是经过实践检验的最佳实践。这些模式被广泛应用于面向对象软件设计中,能够提高代码的可重用性、灵活性和可维护性。设计模式通常被划分为...
设计模式 的分类 总体来说设计模式分为三大类: 创建型模式(5): 工厂方法模式 、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式(7): 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、...
这个压缩包文件"设计模式(包含5个设计模式)含源代码报告.rar"显然是一份宝贵的资源,它涵盖了五个核心的设计模式,并附带了详细的类图、源代码以及文档报告,这对于学习和理解设计模式至关重要。 首先,我们要探讨...
设计模式 四人帮设计模式。比较经典的设计模式。
设计模式是构建大型软件系统zui强大的方法之一,优化软件架构和设计已经逐渐成为软件开发和维护过程中的一个重要课题。 Python设计模式(第2版)通过11章内容,全面揭示有关设计模式的内容,并结合Python语言进行示例...
《新版设计模式手册 - C#设计模式(第二版)》是一部深入探讨C#编程中设计模式的权威指南,尤其适合已经有一定C#基础并希望提升软件设计能力的开发者阅读。设计模式是解决软件开发中常见问题的经验总结,是软件工程的...
全书用两章篇幅对设计模式和GRASP作了基本介绍,3种设计模式的讲解:对于每一种模式,先给出定义,接着通过类比方式用一个现实世界中的例子说明模式的应用,然后分别以C#和Java代码例述模式的架构实现。最后一章给出...
《JavaScript设计模式》是JavaScript设计模式的学习指南。全书分为14章。首先介绍了什么是模式、模式的结构、类别、模式的分类、如何编写模式等等;然后,集中介绍了很多流行的设计模式在JavaScript中的应用,包括...