关于适配器设计模式,我越来越糊涂了

问题描述

以下是老师给我们讲适配器设计模式举得例子,我怎么都看不懂,感觉没有用到适配器设计模式,或者是老师本身举得这个例子就太绕了,我真的晕了。有谁给我细说说这些代码?interfacePowerSourceA{voidinsert();}classPowerSourceAImplimplementsPowerSourceA{publicvoidinsert(){System.out.println("电源A开始工作了。。。");}}interfacePowerSourceB{voidset();}classPowerSourceBImplimplementsPowerSourceB{publicvoidset(){System.out.println("电源B开始工作了。。。");}}classAdapterimplementsPowerSourceA,PowerSourceB{privatePowerSourceAa;privatePowerSourceBb;publicAdapter(PowerSourceAa){this.a=a;}publicAdapter(PowerSourceBb){this.b=b;}publicvoidinsert(){b.set();}publicvoidset(){a.insert();}}classAdapterDemo{publicstaticvoidmain(String[]args){PowerSourceAa=newPowerSourceAImpl();AdapteradapterA=newAdapter(a);set(adapterA);PowerSourceBb=newPowerSourceBImpl();AdapteradapterB=newAdapter(b);insert(adapterB);}publicstaticvoidinsert(PowerSourceAa){a.insert();}publicstaticvoidset(PowerSourceBb){b.set();}}

解决方案

解决方案二:
我是这样想的,您学习设计模式,首先要明确两点,用在什么情况适合;用了此模式,对之后扩展的影响性如何。适配器,我觉得,首先是这样,有一部分接口是您由于一些原因不能修改,或者不愿修改,另一部分接口是由您控制,然后,您需要把这两部分接口汇总起来,给出Adapter接口,比如您需要使用一些开源API,而开源组件又不能完全满足您需求,你还要加入部分自己的功能接口时。用了之后的好处,我想到一点,假设一个新的电源出现了PowerSourceC,那么您的修改是少量的可控的,而且不影响PowerSourceA,PowerSourceB的。
解决方案三:
你们老师提供的示例代码应该是有一点问题的,适配器模式是指针对某个特定类,使用组合的方式对其进行封装,让他实现某种特定接口,并在接口方法中做相应的调用,从而达到不重写特定类的时候,让我们的类能够被用到指定特殊接口类型的方法里但是在你的示例中,其实内部是包含了a,b两个电源的,因此这个类其实可以拆分成两个类classAdapterimplementsPowerSourceA{privatePowerSourceAa;privatePowerSourceBb;publicAdapter(PowerSourceAa){this.a=a;}publicvoidset(){a.insert();}}classAdapterimplementsPowerSourceA{privatePowerSourceBb;publicAdapter(PowerSourceBb){this.b=b;}publicvoidinsert(){b.set();}}

你如果是针对B电源建立的A电源适配,那么当你直接调用A电源的方法时,会空指针错误,所以不如两者拆分,分开处理
解决方案四:
比如你想用耳机听歌,你现在有一个小孔的耳机,但是你的手机插孔是大孔的,而且你还不想换耳机,这时就需要一个大小孔转换器了,这个转换器就是适配器
解决方案五:
设计模式可以先跳过。本人是比较反对"为了模式而模式"的,因为,学好"泛型、反射、注解"这三大天王之后,更容易设计框架、容器。
解决方案六:
一个双向适配器的例子
解决方案七:
这个例子其实并不太适合新手去理解,适配器很常见,现实中的例子更容易理解

时间: 2025-01-21 06:34:30

关于适配器设计模式,我越来越糊涂了的相关文章

ASP.NET的适配器设计模式(Adapter)应用详解_实用技巧

前天有一网友问及有关设计模式的适配器模式(Adapter)时,说不太好理解.让Insus.NET能否举个简单的例子来说明一下.下面的动画是Insus.NET做出来的效果: 上面的演示,两个灯的规格一样,要求输入的电压为15伏. Light1是直接使用,而Light2是使用Adapter(电源适配器).因此Light1只能接收15伏的电压,小于15伏,会提示电压过低,如果超过了15伏,Light1肯定被烧坏. Light2使用了电源适配器,它接收15伏至220的电压,在这电压范围之内,电源适配器会

C#设计模式之适配器设计模式(Adapter)

结构模式(Structural Pattern)描述如何将类或者对象结合在一起形成更大的结构.结构模式描述两种不同的东西:类与类的实例.根据这一点,结构模式可以分为类的结构模式和对象的结构模式. 后续内容将包括以下结构模式: 适配器模式(Adapter):Match interfaces of different classes 合成模式(Composite):A tree structure of simple and composite objects 装饰模式(Decorator):Add

数组越来越糊涂

问题描述 public class Monday {public static int[] getRed() {int a[] = new int[6];// 获奖号码for (int i = 0; i < 6; i++) {while (true) {int k = 0;a[i] = (int) (Math.random() * 33) + 1;for (int j = 0; j < i; j++) {if (a[i] == a[j]) {k = 1;}}if (k == 0) {break

Android设计模式之适配器(Adapter)模式_Android

本文实例为大家分享了Android适配器模式源码,供大家参考,具体内容如下 1. 模式介绍 1.1模式的定义: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作. 1.2模式的使用场景: 用电源接口做例子,笔记本电脑的电源一般都是接受5V的电压,但是我们生活中的电线电压一般都是220V的输出.这个时候就出现了不匹配的状况,在软件开发中我们称之为接口不兼容,此时就需要适配器来进行一个接口转换.在软件开发中有一句话正好体现了这点:任

传统设计模式(七)适配器模式(附外观模式)

记得以前章节谈过的装饰者模式,我们将对象包装起来,赋予他们新的职责.而现在则是以不同目的,包装某些对象:让他们的接口看起来不像自己而像是别的东西.这样就可以在设计中,将类的接口转换成想要的接口,以便实现不同的接口. 在项目中,适配器模式一般扮演者协调者的作用. 1.客户通过目标接口调用适配器的方法对适配器发出请求 2.适配器使用被适配者接口把请求转换成被适配者的一个或多个调用接口 3.客户接受到调用的结果,但并未察觉这一切是适配器在起转换作用 另外还有一种特殊情况,万一系统新旧并存,旧的部分期望

设计模式的C++实现之适配器模式

解决的问题: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一 起工作的两个类能够在一起工作.比如说我的hp笔记本,美国产品,人家美国的电压是110V的,而我们中国的电压是220V, 要在中国能使用,必须找个变压器转一下电压才可以.这个变压器就是个适配器. 适配器模式有类适配器和对象适 配器两种模式,我们将分别讨论. 类适配器: 由图中可以看出,Adaptee类没有Request方法,而客户期待这 个方法.为了使客户能够使用Adaptee类,提供一个中间环节

hand first设计模式 -适配器模式

适配器模式 :将一个类的接口,转换成客户期望的另一个接口.适配器上原本接口不兼容的类可以合作无间. 项目比较旧的代码,迭代采用Enumeration Java代码 public class EnumerationTest { public Enumeration getEnum(Vector list){ Enumeration e = list.elements(); return e; } } 项目比较旧的代码,迭代采用Iterator Java代码 public class Iterato

设计模式之创建型模式

         随着对软件工程研究的不断深入,设计模式也越来越多了,根据其目的准则,划分如下:        1. 创建型:creational 与对象的创建有关.        2. 结构型:Structural 处理类或对象之间的组合.        3. 行为型:behavioral 描述类或对象如何交互及如何分配职责.          创建型模式抽象了实例化的过程,将关于该系统使用的具体的类的信息封装了起来.允许客户用结构和功能差别很大的产品对象配置一个系统.配置可以是静态的,也可以

初识Java设计模式适配器模式_java

[正文] 我们知道,Android中最重要也是最难用的UI控件就是ListView列表控件,而要想灵活运用它,则必须要用到适配器adapter,所以,我觉得还是很有必要来学习一下Java当中的适配器模式(不管以后能不能用到),毕竟Java语言是Android开发很重要的一个基础.  完全了解适配器模式,有很多知识要学习,例如:适配器模式有类的适配器模式和对象的适配器模式两种不同的形式.但作为初学者,我就简单学习一下配器模式入门知识吧,以后会不断完善.希望奋斗在码农路上的童鞋们莫吐槽→_→  一.