`

适配器模式

 
阅读更多

1.模式概述

 官方说法:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

【释义】:类的接口就是类的规范。比如:网店的下订单接口及其实现类。客户希望的另外一个接口就是:通过银行卡来直接付款,也就是:银行的转账接口。那么网店下订单和银行转账,怎么无缝的结合呢?我们就需要一个适配器对象。来对数据进行正确的整合,并给与银行一个合适的数据和请求。

  

 适配器模式【个人理解】:

        当两个对象的功能需要联合起来的时候,但是,他们之间又有着一种不可直接

合作的时候,我们就需要一个第三方的配合对象,来实现他们直接的数据对接。从而

来满足他们的合作运营。

 

       就比如说银行和网店之间,需要一个第三方支付公司,来实现买家购物付款一样。因

为银行的系统不可能直接给网店来使用。而网店呢,也不能直接由银行来管理。所以

必须衍生出第三方支付机构来实现他们直接的功能对接,来实现。

{当然,也可以有网店直接来进行数据对接,只是这样,对接效率就非常低下了,因为

每一个网店都要实现一套,就非常繁琐了。有了适配对象,就统一处理了。其实适配器

也是一种对象复用的一种体现,只要有1个,大家都去调用即可。}

 

2.模式模型:

图示

 

因为不同的业务系统所关注和处理的业务对象是不同的,所以,直接进行合作联合是无法直接

实现的。所以就需要一个适配环节来处理不同,使得双方可以进行配合运作。

 

 

3.实际案例:

 

代码:

package org.wind.ood.adapter.mod2;

import java.math.BigDecimal;

/**
 * 买家
 */
public class Buyer {
	private Shop shop = new Shop();
	
	public void buy(int count, BigDecimal price, String name){
		System.out.println("买家买了"+count+"个"+price.toString()+"元的 "+name);
		boolean rt = shop.sell(count, price, name);
		String tip = rt?"成功":"失败";
		
		System.out.println(" 购物"+tip);
	}
}

 

package org.wind.ood.adapter.mod2;

import java.math.BigDecimal;

public class Shop {
	private String sellerCardNo = "123...";
	private String BuyerCardNo = "656...";
	private ZhifuBao zfb = new ZhifuBao();
	
	public boolean sell(int count, BigDecimal price, String name) {
		System.out.println("商家卖了"+count+"个"+price.toString()+"元的 "+name);
		
		//调用支付宝的转账接口:付款
		return zfb.pay(price.multiply(new BigDecimal(count)), BuyerCardNo , sellerCardNo);
	}
}

 

package org.wind.ood.adapter.mod2;

import java.math.BigDecimal;

/**
 *通过适配的客户端处理接口,
 *来实现业务的正常流转
 *
 *通过第三方的适配,来满足客户端的最初的需求
 */
public class ZhifuBao implements Bank {
	private Bank bank = new BankImpl();

	@Override
	public boolean transfer(BigDecimal amount, String from, String to) {
		
		boolean rt = bank.transfer(amount, from, to);
		System.out.println("调用银行转账接口成功,订单支付成功! ");
		
		return rt;
	}

	public boolean pay(BigDecimal multiply, String buyerCardNo, String sellerCardNo) {
		System.out.println("支付宝支付了一笔订单:总金额:"+multiply);
		return transfer(multiply, buyerCardNo, sellerCardNo);
	}

}

 

package org.wind.ood.adapter.mod2;

import java.math.BigDecimal;

//银行的对外服务接口
public interface Bank {
	
	//转账:把买家银行卡的钱转到卖家的银行卡
	public boolean transfer(BigDecimal amount, String from, String to);

}

 

package org.wind.ood.adapter.mod2;

import java.math.BigDecimal;

public class BankImpl implements Bank {

	public boolean transfer(BigDecimal amount, String from, String to) {
		
		System.out.println("银行完成了一次转账业务:从银行卡:"+from
				+"  转到银行卡:"+to+"  总金额:"+amount);
		
		return true;
	}

}

 

package org.wind.ood.adapter.mod2;

import java.math.BigDecimal;

public class Test {
	public static void main(String[] args) {
		Buyer s = new Buyer();
		
		s.buy(3, new BigDecimal("10") , "水杯");//卖了3个10元的水杯
		
	}
}

 

 

代码运行结果:

买家买了3个10元的 水杯

商家卖了3个10元的 水杯

支付宝支付了一笔订单:总金额:30

银行完成了一次转账业务:从银行卡:656...  转到银行卡:123...  总金额:30

调用银行转账接口成功,订单支付成功! 

 购物成功

 

4.自我总结:

 

        适配器模式:两个有业务间接关系的对象【如:购物与支付】,由于处理业务对象的

不同【订单与钱】,而导致无法进行联合业务的拓展处理,从而需要引进第三方的配

合处理,这就是适配器模式。不管是通过接口的实现,还是类的调用实现,都是通过

第三方【支付宝】来适配最终客户端【银行】的处理,并且满足第一方【购物】的业

务处理。

 

      不仅可以用于整合业务对接,而且,适配器也可以适用于:接口多定义,用户可以选择

实现这样的环境。比如:用户注册,手机号注册,邮箱注册,可以定义2个注册方法接口。

调用方如果只想实现手机号的注册,那么就只实现手机号的注册就可以满足自己的需求了。

就可以不用实现邮箱注册了。其中适配器只是空实现。需要实现的时候,继承适配器,然后

实现相应的方法即可。

 

所以,我个人的认识范围上总结为:

适配器的2种应用环境:

代理适配器【接口代理实现类】和抽象适配器【接口抽象实现类】

  • 大小: 3.6 KB
分享到:
评论

相关推荐

    JAVA设计模式(抽象类与适配器模式)

    今天我们要探讨的是JAVA设计中的两个重要模式:抽象类与适配器模式。 首先,我们来理解一下“抽象”。抽象是面向对象编程的核心概念之一,它帮助我们处理对象的复杂性。在Java中,抽象通常通过抽象类来实现。抽象类...

    设计模式之适配器模式Java实现和类设计图

    在这个Java实现中,我们将深入探讨适配器模式的两大类型:类适配器模式和对象适配器模式,并通过具体的代码示例和UML类图来阐述其工作原理。 首先,我们来理解适配器模式的基本概念。适配器模式就像现实生活中的...

    设计模式之适配器模式

    适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,特别是在解决系统间的兼容性和接口不匹配问题时。适配器模式的核心思想是将一个类的接口转换成客户希望的另一个接口,使原本由于接口不兼容而无法...

    设计模式 - 适配器模式(C++实例)

    适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,特别是在解决系统间的兼容性和接口不匹配问题时。适配器模式的核心思想是将一个类的接口转换成客户希望的另一个接口,使原本由于接口不兼容而无法...

    java 动态代理模式 适配器模式

    Java动态代理模式与适配器模式是两种在软件设计中常用的设计模式,它们都有各自的优点和应用场景。在Java中,动态代理模式主要依赖于Java的反射API和InvocationHandler接口,而适配器模式则用于解决不同接口之间的...

    java设计模式之适配器模式

    适配器模式是一种在软件工程中广泛使用的结构型设计模式,它允许两个不兼容的接口之间进行通信。在Java中,适配器模式扮演着重要的角色,尤其在处理遗留代码或者第三方库集成时,能够有效地解决接口不匹配的问题。...

    java中适配器模式案例

    适配器模式是一种设计模式,它允许不兼容的类或接口之间进行通信,通过创建一个适配器类作为中间桥梁,使得原本不匹配的接口能够协同工作。在Java中,适配器模式广泛应用于系统集成、旧代码复用以及第三方库的兼容性...

    适配器模式案例代码

    适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在这个案例中,我们关注的是如何通过适配器模式解决实际编程问题。文章《适配器模式案例代码》提供了具体的实现示例,链接指向了CSDN博主...

    设计模式-适配器模式(讲解及其实现代码)

    适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,特别是在处理系统集成、遗留代码重用以及不同接口之间兼容性问题时。适配器模式的主要目的是将两个不兼容的接口融合在一起,使得原本无法直接协作...

    适配器模式demo源码

    适配器模式是一种常用的设计模式,它在软件开发中起到了桥梁的作用,允许两个不兼容的接口之间进行通信。在这个“适配器模式demo源码”中,我们可以深入理解这一模式的实现方式及其应用场景。 适配器模式的核心思想...

    设计模式系列之适配器模式

    适配器模式是一种软件设计模式,它在不同的接口之间起到了桥梁的作用,使得原本由于接口不兼容而无法协作的类能够协同工作。这种模式的核心思想是将一个类的接口转换成客户希望的另一个接口,从而使原有类能适应新的...

    设计模式的适配器模式的例子

    适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,允许不同接口的类之间进行通信。适配器模式的核心思想是将一个类的接口转换成客户期望的另一个接口,使得原本由于接口不兼容而无法一起工作的类...

    实验七:适配器模式.rar

    适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在本实验中,我们将深入探讨适配器模式的概念、应用场景以及如何在实际编程中实现它。适配器模式通常分为类适配器和对象适配器两种形式。 ...

    适配器模式源代码

    适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,允许不兼容的接口之间进行通信。在这个源代码实例中,我们看到的是如何通过适配器模式来实现不同对象之间的协作,使得原本无法直接交互的系统组件...

    设计模式C++学习之适配器模式(Adapter)

    适配器模式(Adapter)是软件工程中一种常用的设计模式,它允许两个不兼容的接口之间进行通信。在C++编程中,适配器模式能够帮助我们复用现有的类,或者将第三方库的接口与我们的系统接口进行对接,从而提高代码的可...

Global site tag (gtag.js) - Google Analytics