Android开发之设计模式-适配器模式

适配器模式(Adapter Pattern)

是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。

定义:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

主要解决:主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。

何时使用: 1、系统需要使用现有的类,而此类的接口不符合系统的需要。 2、想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作,这些源类不一定有一致的接口。 3、通过接口转换,将一个类插入另一个类系中。(比如老虎和飞禽,现在多了一个飞虎,在不增加实体的需求下,增加一个适配器,在里面包容一个虎对象,实现飞的接口。)

如何解决:继承或依赖(推荐)。

关键代码:适配器继承或依赖已有的对象,实现想要的目标接口。

应用实例: 1、美国电器 110V,中国 220V,就要有一个适配器将 110V 转化为 220V。 2、JAVA JDK 1.1 提供了 Enumeration 接口,而在 1.2 中提供了 Iterator 接口,想要使用 1.2 的 JDK,则要将以前系统的 Enumeration 接口转化为 Iterator 接口,这时就需要适配器模式。 3、在 LINUX 上运行 WINDOWS 程序。 4、JAVA 中的 jdbc。

优点: 1、可以让任何两个没有关联的类一起运行。 2、提高了类的复用。 3、增加了类的透明度。 4、灵活性好。

缺点: 1、过多地使用适配器,会让系统非常零乱,不易整体进行把握。比如,明明看到调用的是 A 接口,其实内部被适配成了 B 接口的实现,一个系统如果太多出现这种情况,无异于一场灾难。因此如果不是很有必要,可以不使用适配器,而是直接对系统进行重构。 2.由于 JAVA 至多继承一个类,所以至多只能适配一个适配者类,而且目标类必须是抽象类。

使用场景:有动机地修改一个正常运行的系统的接口,这时应该考虑使用适配器模式。

注意事项:适配器不是在详细设计时添加的,而是解决正在服役的项目的问题。

下面举一个变压器的例子。美国的电压110,中国电压220,如何把从美国带回来的电饭煲在中国使用,这就需要用到变压器进行调节了,变压器也就是110电压的电饭煲在220电压下工作的适配器。

UML图:

1、美国的生活电压110V


 
 
  1. /***
  2. *美国的生活电压110V
  3. */
  4. public interface USAVoltage {
  5. // 目标角色
  6. // 美国110电压接口
  7. void connect();
  8. }

2、110V电压实现类


 
 
  1. /**
  2. *110电压实现类
  3. */
  4. public class USAVoltageImpl implements USAVoltage{
  5. @Override
  6. public void connect() {
  7. System.out.println( "110V接通电源,开始工作...");
  8. }
  9. }

3、中国的生活电压220V


 
 
  1. /**
  2. * 中国的生活电压220V
  3. * */
  4. public interface ChineseVoltage {
  5. // 源角色
  6. // 中国220电压接口
  7. void connect();
  8. }

4、200V电压实现类


 
 
  1. /**
  2. * 220电压实现类
  3. * */
  4. public class ChineseltageImpl implements ChineseVoltage{
  5. @Override
  6. public void connect() {
  7. System.out.println( "220V接通电源,开始工作");
  8. }
  9. }

5、美国110v的电饭煲


 
 
  1. /***
  2. *110v的电饭煲
  3. */
  4. public class ElectricCooker {
  5. //110电饭煲要用110电压接口
  6. private USAVoltage usaVoltage;
  7. public ElectricCooker(USAVoltage usaVoltage){
  8. super();
  9. this.usaVoltage = usaVoltage;
  10. }
  11. public void cook(){
  12. usaVoltage.connect(); //通电
  13. System.out.println( "开始做饭...");
  14. }
  15. }

6、电压适配器


 
 
  1. /**
  2. * 电压适配器
  3. * 为了能够适配110V电饭煲的电源接口,我们要继承110V接口
  4. * 适配器角色,实现目标角色接口
  5. * */
  6. public class PowerAdaptor implements USAVoltage{
  7. /**继承110V接口,可以使用美国电饭煲,持有220V电压引用可以用220V电压工作*/
  8. private ChineseVoltage chineseVoltage; // 用220v=接口进行适配
  9. public PowerAdaptor(ChineseVoltage chineseVoltage){
  10. super();
  11. this.chineseVoltage = chineseVoltage;
  12. }
  13. @Override
  14. public void connect() {
  15. chineseVoltage.connect();
  16. }
  17. }

7、测试类


 
 
  1. /**
  2. * 测试类
  3. * */
  4. public class AdapterPatternDemo {
  5. public static void main(String[] args) {
  6. ChineseVoltage chineseVoltage = new ChineseltageImpl(); //220V电压
  7. PowerAdaptor adaptor = new PowerAdaptor(chineseVoltage); //电源适配
  8. ElectricCooker cooker = new ElectricCooker(adaptor); //使用110V美国电压
  9. cooker.cook(); //110V的电饭煲接通220V的电压开始做饭
  10. }
  11. }

8、执行程序,输出结果

可以看出,110的电饭煲开始在220电压下工作了。这就是适配模式。

适配器模式有两种形式:类的适配器模式和对象的适配器模式

具体详解,参考以下链接:

https://wenku.baidu.com/view/29bded084a7302768e99394a.html?st=1

下篇代理模式,待续...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
智慧校园2.0是高校信息化建设的新阶段,它面对着外部环境变化和内生动力的双重影响。国家战略要求和信息技术的快速发展,如云计算、大数据、物联网等,为智慧校园建设提供了机遇,同时也带来了挑战。智慧校园2.0强调以服务至上的办学理念,推动了教育模式的创新,并对传统人才培养模式产生了重大影响。 智慧校园建设的解决之道是构建一个开放、共享的信息化生态系统,利用互联网思维,打造柔性灵活的基础设施和强大的基础服务能力。这种生态系统支持快速迭代的开发和持续运营交付能力,同时注重用户体验,推动服务创新和管理变革。智慧校园的核心思想是“大平台+微应用+开放生态”,通过解耦、重构和统一运维监控,实现服务复用和深度融合,促进业务的快速迭代和自我演化。 智慧校园的总体框架包括多端协同,即“端”,它强调以人为中心,全面感知和捕获行为数据。这涉及到智能感知设备、超级APP、校园融合门户等,实现一“码”或“脸”通行,提供线上线下服务端的无缝连接。此外,中台战略是智慧校园建设的关键,包括业务中台和数据中台,它们支持教育资源域、教学服务域等多个领域,实现业务的深度融合和数据的全面治理。 在技术层面,智慧校园的建设需要分期进行,逐步解耦应用,优先发展轻量级应用,并逐步覆盖更多业务场景。技术升级路径包括业务数据化、数据业务化、校园设施智联化等,利用IoT/5G等技术实现设备的泛在互联,并通过人工智能与物联网技术的结合,建设智联网。这将有助于实现线上线下一网通办,提升校园安全和学习生活体验,同时支持人才培养改革和后勤管理的精细化。 智慧校园的建设不仅仅是技术的升级,更是对教育模式和管理方式的全面革新。通过构建开放、共享的信息化生态系统,智慧校园能够更好地适应快速变化的教育需求,提供更加个性化和高效的服务,推动教育创新和人才培养的高质量发展。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值