客户端通过类的接口访问提供的服务,一般现有类可提供用户的所需功能,而有时不能满足用户的期望。例如有两个毫无关联的类组合在一起使用,要么就是修改各自的接口,但是在不修改各自接口的前提下,应该怎么做呢?使用Adapter模式,使得原本需要修改接口的才能在一起工作的两个类可以通过此模式不进行修改接口,在一起工作。
举个例子,面包制作商可以制作面包,蛋糕制作商可以制作蛋糕,某工厂以前请了面包制作商只做面包,而现在还要制作蛋糕。
传统方法 增加一个蛋糕制作的接口,并且在实现中增加制作蛋糕的实现。
public interface MakeFactory{
String getCake();
String getBread();
}
实现:
public class MakeFactoryImpl implements MakeFactory{
public String getBread() {
// TODO Auto-generated method stub
return null;
}
public String getCake() {
// TODO Auto-generated method stub
return null;
}
}
这样就ok了。
但是想想,以前他是做面包的,有做面包的一套体制,如果再把做蛋糕加进去,工序有可能会乱。并且无法工作。
这样我们可以通过Adapter模式。
/**
* Adaptee 被适配器
* */
public class MakeBread {
public String getBread(){
System.out.println("++++++bread++++");
return "bread";
};
}
以前我只有一个面包房,现在我还要蛋糕房
public interface MakeFactory{
String getCake();
String getBread();
}
最后看看如何通过适配器模式,将不相连的两个类配在一起工作。
/**
* Adapter 适配器
* */
public class MakeCake extends MakeBread implements MakeFactory {
public String getCake() {
System.out.println("++++++cake++++");
return "cake";
};
}
这样做,我们的MakeFactory工厂就可以有条不紊的进行制作。
我们测试一下
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
MakeCake m = new MakeCake();
m.getCake();
m.getBread();
}
}
测试结果
++++++cake++++
++++++bread++++
从这里不难看出,此接口可以满足用户的需要。
分享到:
相关推荐
通过阅读和理解这个源代码,我们可以更深入地了解适配器模式的原理和应用,提升我们的设计能力,使我们在面对类似问题时能更从容地利用设计模式来优化代码结构和提高代码复用性。同时,这也是学习和实践面向对象设计...
通过阅读博客文章《设计模式——适配器模式》(链接:https://wjy320.iteye.com/blog/2042323),我们可以深入了解适配器模式的实现细节,包括具体的代码示例以及在实际项目中的应用案例。这个博客可能会讨论如何在...
博客链接(https://ylxy3058.iteye.com/blog/2226113)可能提供了更深入的适配器模式的实践案例或源码分析,建议参考学习,以深入了解适配器模式的实现细节和应用场景。 至于"cygoattest"这个压缩包子文件的文件...
首先,让我们了解适配器模式的基本组成部分: 1. **目标(Target)**:这是客户端需要调用的接口。在C#中,这通常是一个抽象类或接口。 2. **适配者(Adaptee)**:这是需要适配的旧接口或类,它可能是一个第三方库...
通过阅读文档,你可以了解适配器模式的基本原理和设计思想;通过查看代码示例,你可以学习如何在实践中实现适配器模式,包括类适配器和对象适配器的代码结构和用法。 总结一下,适配器模式是一种重要的设计模式,...
适配器模式是一种在软件工程中广泛使用的结构型设计模式,它的主要目的是为了让不兼容的接口之间能够进行通信。在.NET开发中,适配器模式扮演着重要角色,尤其是在处理不同系统、库或组件间的集成时。这个".Net设计...
在阅读文章《设计模式——适配器模式(adapter)》时,你可以期待了解到更多关于适配器模式的实战案例、优缺点分析以及如何在实际项目中有效利用这一模式来解决问题。同时,提供的`adapter`压缩包文件可能包含示例...
适配器模式和外观模式是两种非常重要的设计模式,它们在实际项目中有着广泛的应用。本资源提供了一个关于这两种模式的实战示例,帮助我们更好地理解和应用它们。 适配器模式(Adapter Pattern)的主要目的是将两个...
[刚刚上传的demo运行有问题,重新传了个新的],这个的一个iOS的适配器模式的实例代码,目前就是一个简单的demo,后期还会更新适配器在 MVC,MVP,MVVM中的使用,demo对应着简书:https://www.jianshu.com/p/e2ebcf19098f,...
通过本实验,我们深入了解了适配器模式的概念及其两种实现方式——对象适配器和类适配器。实验中,我们不仅学习了如何设计和实现适配器,还通过具体的示例理解了适配器模式的实际应用价值。这种模式能够有效地提升...
适配器模式可以分为三种类型:类适配器模式、对象适配器模式和接口适配器模式。 类适配器模式中,适配器类通过继承适配者类并实现目标接口来实现适配。例如,在手机充电的例子中,充电器(VoltageAdapter)继承了...
适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,特别是在解决系统间的兼容性和接口不匹配问题时。适配器模式的核心思想是将一个类的接口转换成客户希望的另一个接口,使原本由于接口不兼容而无法...
通过这个DEMO,开发者不仅可以学习适配器模式的基本概念,还能了解到如何在实际编码中应用这一模式,从而提升软件设计的灵活性和可维护性。在分析和理解DEMO的过程中,建议关注以下几个关键点: 1. 适配器类的结构...
在深入讨论适配器模式之前,我们首先需要了解几个基本的概念: - **目标角色(Target)**:这是客户端期望的接口。所有适配后的对象都应该实现这个接口。 - **源角色(Adaptee)**:需要被适配的类。它的接口不符合...
适配器模式与桥接模式是软件设计模式中的两种重要结构型模式,它们在软件开发中起到了关键的作用,帮助开发者解决系统组件之间的兼容性问题和解耦问题。这两种模式都是为了实现不同接口间的协同工作,但各有其独特的...
在阅读《Head First设计模式》中的适配器模式章节时,你会了解到如何根据具体需求选择适当的适配器类型,以及如何有效地实现适配器以达到预期的效果。通过案例分析和实际代码示例,书中的讲解会让你对适配器模式有...
通过分析这个示例,我们可以更清晰地了解适配器模式在实际项目中的应用。 适配器模式在Java、C#、Python等编程语言中都有广泛的应用。在Java中,可以使用接口或继承来实现适配器;在C#中,可以使用接口和委托;而在...