`
plkong
  • 浏览: 177519 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

设计模式-adapter

 
阅读更多

基本概念

 

   客户:需要调用我们的代码的对象。  

 Adapter模式的宗旨:保留现有类所提供的服务,向客户提供接口,以满足客户的期望,或者在系统开发初期暂时使用了第三方提供组件,保留自己的接口,待系统成熟后,开发自己的组件。

 

适配器一般有如下两种实现方式

 

(1)类适配器:当客户在接口中定义了他期望的行为时,我们就可以应用适配器模式,提供一个实现该接口的类,并且扩展已有的类,通过创建子类来实现适配。

 (2)对象适配器:对象适配器”通过组合除了满足“用户期待接口”还降低了代码间的不良耦合。在工作中推荐使用“对象适配”。

类适配器和对象适配器UML图

 

写个例子帮助理解下。

      一个电子商务网站,在开发初期为了减小投资成本,打算网站支付功能调用第三方组件,但考虑到在系统成熟后,公司可能会自主开发组件,所以需要考虑到今后的组件的替换,所以再支付功能使用了适配器模式。

 

支付功能抽象为接口:

public interface IPay {
	public boolean pay(int amount);
}
 

第三方支付组件:

public class ThirdPayTools {

	public boolean pay(int amount)
	{
		if(amount > 100)
		{
			System.out.println("支付成功!");
			return true;
		}
		else
		{
			System.out.println("金额不足!");
			return false;
		}
	}
}

 

对象适配器:

public class PayAdapter implements IPay {

	ThirdPayTools thirdPayTools = new ThirdPayTools();
	@Override
	public boolean pay(int amount) {
		return thirdPayTools.pay(amount);
	}
}

 类适配器:

public class PayAdapter extends ThirdPayTools implements IPay {

	public boolean pay(int amount) {
		return super.pay(amount);
	}
}
 

测试类:

 

public class Test {
	public static void main(String[] args) {
		IPay payAdapter = new PayAdapter();
		payAdapter.pay(20);
		payAdapter.pay(150);
	}
}

 

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

相关推荐

    codelab-adapter-4_9_1-win.zip

    在计算机编程中,适配器(Adapter)是一种设计模式,它的作用是使两个不兼容的接口能够协同工作。在这个特定的案例中,codelab-adapter可能是为了使Scratch3与特定的教学平台或设备(如Codelab)进行无缝对接,提供...

    C++设计模式--基于Qt4开源跨平台开发框架

    《C++设计模式--基于Qt4开源跨平台开发框架》一书主要探讨了如何在C++编程中利用设计模式,并结合Qt4框架进行高效的跨平台应用开发。设计模式是软件工程中的重要概念,它们是经过时间和实践验证的解决特定问题的模板...

    前端开源库-parse5-htmlparser2-tree-adapter

    Parse5是一个遵循HTML5规范的JavaScript解析器,其设计目标是提供高效、准确且易于使用的API来解析和序列化HTML文档。Parse5的主要特点包括对HTML5标准的严格遵循,支持最新的特性和语法,以及对错误处理的精细控制...

    C#设计模式-吕震宇

    C#设计模式(10)-Adapter Pattern C#设计模式(9)-Prototype Pattern C#设计模式(8)-Builder Pattern C#设计模式(7)-Singleton Pattern C#设计模式(6)-Abstract Factory Pattern C#设计模式(5)-...

    java设计模式---诙谐易懂版

    根据给定文件内容,以下是关于Java设计模式的知识点说明: 1. 策略模式(Strategy Pattern)是一种行为设计模式,允许在运行时选择算法的行为。策略模式的意图是定义一系列算法,将每个算法封装起来,并使它们可以...

    Amp-react-stream-adapter.zip

    这种设计模式对于处理I/O密集型任务特别有用,如网络请求或文件读写,因为它避免了不必要的等待时间,提升了整体性能。 Promise是Amp框架中的另一个关键特性,它是处理异步操作结果的一种方式。Promise代表了一个...

    前端项目-ember-data-django-rest-adapter.zip

    ember-data-django-rest-adapter-master 这是压缩包中的主要目录,暗示了源代码和其他相关文件都在这个目录下。"master"通常指的是项目的主要或默认分支,意味着这是项目的核心代码库。 **知识点详解:** 1. **...

    ios-adapter.zip

    在IT行业中,适配器(Adapter)模式是一种常用的软件设计模式,它允许两个不兼容的接口之间进行通信。"ios-adapter.zip"这个文件名暗示了这是一个与iOS平台相关的适配器实现,可能是用于解决不同组件或服务之间的...

    PyPI 官网下载 | lab-orchestrator-lib-django-adapter-0.0.3.tar.gz

    Django适配器是一种设计模式,允许不同的组件或库之间进行交互,而无需直接耦合。在这个例子中,适配器可能是为了使lab-orchestrator-lib与Django的请求处理、模型操作或其他核心功能无缝对接。 "python 后端 开发...

    设计模式精解-GoF-23种设计模式解析--附C++源代码

    设计模式是软件工程中的一种最佳实践,用于解决在软件开发过程中常见的问题。这些模式是由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位大师,通常被称为GoF(Gang of Four),在他们的经典著作...

    《设计模式--基于C#的工程化实现及扩展》.(王翔)_《0528》.rar

    《设计模式--基于C#的工程化实现及扩展》是一本深入探讨软件设计模式的书籍,作者王翔通过C#语言来阐述各种设计模式的工程化应用和拓展。设计模式是软件开发中的一种最佳实践,它总结了在特定场景下解决常见问题的...

    JAVA设计模式-chm版

    Java设计模式是软件开发中的一种最佳实践,它总结了在解决特定问题时程序员们经常采用的有效方法。这个“JAVA设计模式-chm版”资源显然包含了关于Java设计模式的详细信息,便于理解和应用。设计模式是对常见问题的...

    c++设计模式-结构型模式-适配器模式

    c++设计模式-结构型模式-适配器模式,其他工程,c++源码。适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。

    26种设计模式-----pdf

    设计模式是软件工程中的一种最佳实践,它是在特定上下文中解决常见问题的模板。这个压缩包文件名为"26种设计模式",其中可能详细介绍了软件开发中的26个核心设计模式。这些模式是经过时间检验、被广泛接受并反复使用...

    设计模式-王翔 全本

    《设计模式-王翔 全本》是一本深入探讨软件设计模式的重要著作,作者王翔在书中详尽地阐述了设计模式的理论基础与实践应用。设计模式是软件工程中的重要概念,它代表了在特定情境下,经过时间检验、可复用的解决方案...

    设计模式之 适配器 Adapter C++ 源码

    设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式...

    C#设计模式-C#设计模式

    在软件开发领域,设计模式是经过时间和实践验证的解决方案,用于解决常见的编程问题。C#设计模式是将这些通用解决方案应用于C#编程语言的具体实践。本文将深入探讨C#中的几种重要设计模式,并阐述它们的核心概念、...

    Java 中的设计模式 - jdon

    《Java中的设计模式 - jdon》是一本深入探讨Java编程中设计模式的电子书,它主要聚焦于如何在实际开发中应用和理解这些经典的设计原则和模式。设计模式是软件工程中的一种最佳实践,它总结了在特定上下文中解决常见...

    drf-schema-adapter-master_restframework_django_

    适配器模式是一种设计模式,它允许不同接口的类协同工作。在这个上下文中,适配器可能允许开发者定义自己的逻辑来扩展或修改 DRF 自动生成的 API schema,以符合项目的特定规范或者提供额外的元数据。 基于标签 ...

Global site tag (gtag.js) - Google Analytics