适配器模式的在GOF23中的定义是:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
适配器模式属于结构型模式,分为类的适配器模式与对象的适配器模式。它们的结构图如下所示:
图1类的适配器模式
图2对象的适配器模式
Eclipse作为一个扩展性很强的平台,那么内部类、接口如何在保持稳定的情况下对外提供更多的服务,在Eclipse的设计上,采用适配器模式是一个很好的选择。 在Eclipse开发中,适配器实现的方式主要有以下两种:
1. 实现IAapter接口。IAapter的接口定义如下:
public interface IAdaptable {
/**
* 根据传入的目标类型返回相应适配对象。
*/
public Object getAdapter(Class adapter);
}
参照“图2对象的适配器模式”,即Adaptee对象还有一个上层接口IAdaper,在这种情况下,欲通 过 Adaptee获得一个目标对象,可以通过调用Adaptee的getAdapter()方法:
public Object getAdapter(Class target) {
if(target == ITarget.class){
Adapter adapter = new Adapter(this);
return adapter;
}
return super.getAdapter(target);
}
通过这种查询获取的方式,客户端就不需要关注如何将对象适配以获得目标对象了。即:
在职责分配上,由被转换的对象来确定如何进行转换,也只有该对象知道如何转换,被转换对象使用了本身的资源来完成转换对象的创建。
2. 为适配对象注册IAdapterFactory, IAdapterFactory的接口定义如下:
public interface IAdapterFactory {
public Object getAdapter(Object adaptableObject, Class adapterType);
/**
* @return 所有可以适配的类型。
*/
public Class[] getAdapterList();
}
这种方式一般使用于对不能修改代码的现有对象进行适配。如eclipse资源管理模型对象IFile、IResource,通过这种适配工厂方式,来完成向目标对象的转换。
客户端的调用方式如下:
IAdapterManager manager = Platform.getAdapterManager();
IAdapterFactory factory = new FileAdapterFactory();
manager.registerAdapters(factory, IFile.class);
3. 一个例子:利用Eclipse属性视图显示自己的属性。
Eclipse的属性视图即Properties View可以用于显示当前所选元素的属性,在很多场合中,属性视图还同时提供属性编辑的功能。属性视图如何根据当前所选对象,获得显示的内容呢,参考PropertySheetViewer的实现,可以发现PropertySheetViewer的显示模型对象为IPropertySource,从所选对象到IPropertySource装换的代码如下:
protected IPropertySource getPropertySource(Object object) {
if (sources.containsKey(object))
return (IPropertySource) sources.get(object);
IPropertySource result = null;
IPropertySourceProvider provider = propertySourceProvider;
if (provider == null && object != null)
provider = (IPropertySourceProvider) Platform.getAdapterManager()
.getAdapter(object, IPropertySourceProvider.class);
if (provider != null) {
result = provider.getPropertySource(object);
} else if (object instanceof IPropertySource) {
result = (IPropertySource) object;
} else if (object instanceof IAdaptable) {
result = (IPropertySource) ((IAdaptable) object)
.getAdapter(IPropertySource.class);
} else {
if (object != null)
result = (IPropertySource) Platform.getAdapterManager()
.getAdapter(object, IPropertySource.class);
}
sources.put(object, result);
return result;
}
可以看出,这就是适配器模式在Eclipse使用的一个场景。 我们在定制自己的属性视图的时候,只要将自己的模型提供IPropertySource 的适配,提供属性视图就可以了。
分享到:
相关推荐
在Eclipse中有效地运用设计模式,能够提升开发效率和代码质量。 1. **单例模式**: 单例模式确保一个类只有一个实例,并提供全局访问点。在Eclipse中,可以使用静态内部类实现线程安全的单例,避免了同步问题。 2. ...
7. **适配器模式**:它将不兼容的接口转换为可以使用的接口。在Java EE中,例如,适配器可以用来封装不同数据源,使它们能被统一的API访问。 8. **策略模式**:定义一组算法,封装每个算法并使它们之间可以互相替换...
Java设计模式和Eclipse是Java开发中的两个重要概念,它们在软件工程中有着广泛的运用,极大地提升了代码的可维护性和复用性。 首先,我们来深入理解Java设计模式。设计模式是在特定上下文中解决常见问题的模板,它...
例如,开发者可能会使用IDE(如Eclipse、IntelliJ IDEA)中的重构工具来帮助实现适配器模式,或者通过查看开源项目的源码来学习如何实际应用这个模式。 至于“TestAdapter”,这可能是项目中用于测试适配器功能的类...
本作业以“软件设计模式”为主题,特别关注了装饰模式、工厂模式和适配器模式的运用。这三种模式都是面向对象设计的核心部分,它们在代码复用、结构优化和系统扩展性提升方面扮演着重要角色。 首先,装饰模式是一种...
适配器模式是设计模式的一种,它允许你将不兼容的接口转换为可以一起工作的接口。在Android开发中,适配器不仅实现了这种模式,还通过数据绑定实现了视图与数据的分离,使得代码更加灵活和可维护。理解并熟练运用...
适配器模式帮助两个不兼容的接口协同工作,而代理模式可以在调用原对象的同时添加额外功能,如缓存或权限控制。装饰器模式在不改变原有类的基础上,动态地给对象添加新的职责或功能。 观察者模式让多个对象能订阅一...
这些模式在Eclipse这样的Java开发环境中有着广泛的应用,通过运行client.java文件,我们可以看到这些模式在实际代码中的应用和效果。理解并熟练运用这些设计模式,能够帮助开发者写出更优雅、可维护的Java代码。
这个压缩包“设计模式实现代码”包含的是作者在学习设计模式过程中编写的实践代码,使用Eclipse开发环境,解压后可以直接运行,便于理解和学习。 设计模式分为三大类:创建型模式(Creational Patterns)、结构型...
- 适配器模式(Adapter Pattern):将一个类的接口转换成客户希望的另一个接口。适配器使原本由于接口不兼容而不能一起工作的那些类可以一起工作。 - 桥接模式(Bridge Pattern):将抽象部分与实现部分分离,使...
在Eclipse这样的集成开发环境中,可以直接将解压后的"src"目录导入到项目中,便于浏览、调试和学习。以下是一些可能涵盖的设计模式及其详细解释: 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。在...
结构型模式处理类与对象的组合,如适配器模式、装饰器模式、代理模式、桥接模式、组合模式、外观模式和享元模式。行为型模式关注对象之间的交互和责任分配,如策略模式、模板方法模式、观察者模式、访问者模式、迭代...
结构型设计模式关注如何组合对象和类以构建更大的结构,例如适配器模式(Adapter)、装饰器模式(Decorator)和桥接模式(Bridge)。行为型设计模式则关注对象之间的职责分配和通信,比如观察者模式(Observer)、...
例如,装饰模式允许动态地给对象添加新的行为或责任,而适配器模式则可以使不兼容的接口之间进行通信。 4. **行为型模式** 行为型模式关注对象之间的交互和职责分配,包括责任链(Chain of Responsibility)、命令...
- **适配器模式(Adapter)**:将一个类的接口转换成客户希望的另一个接口。 - **桥接模式(Bridge)**:将抽象部分与它的实现部分分离,使它们都可以独立变化。 - **组合模式(Composite)**:将对象组合成树形结构...
- 适配器模式:将一个类的接口转换成客户希望的另一个接口。 - 桥接模式:将抽象部分与实现部分分离,使它们可以独立变化。 - 组合模式:允许你将对象组合成树形结构来表示“整体/部分”层次结构。 - 外观模式:...
设计模式是软件工程中的一种最佳实践,用于解决在开发过程中经常遇到的问题,提供了一套可复用的解决方案。Java中的23种设计模式是被广泛接受和应用的,它们可以分为三大类:创建型、结构型和行为型模式。 1. **...
- 适配器模式(Adapter):将两个不兼容的接口转换为一个兼容的接口,使得原本由于接口不兼容而不能一起工作的那些类可以协同工作。 - 桥接模式(Bridge):将抽象部分与它的实现部分分离,使它们都可以独立地变化...
求职者对设计模式有深入理解,包括工厂模式、单例模式、缺省适配器模式、不变模式、装饰模式、代理模式以及MVC和Spring IoC等,这些都是软件设计中的重要模式,有助于提高代码的可重用性和可维护性。他还熟练运用Web...
适配器模式的运用使得Eclipse能够灵活地扩展和整合各种功能,而无需硬编码特定的依赖。 在实际开发中,`IJavaProject`、`IJavaElement`和`IAdaptable`通常结合使用。开发者可以利用`IJavaProject`来管理和操作项目...