首页 > 其他分享 >6 设计模式-适配模式

6 设计模式-适配模式

时间:2022-10-21 19:23:31浏览次数:35  
标签:Target 适配 适配器 模式 Adaptee void 设计模式 public

适配器模式

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

模式中的角色

1.目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。
2.需要适配的类(Adaptee):需要适配的类或适配者类。
3.适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口

适配器的实现方式

1.类适配器方式

/**
 * 被适配的类
 * (相当于例子中的,PS/2键盘)
 * @author Tino
 *
 */
public class Adaptee {
	
	public void request(){
		System.out.println("可以完成用户需要的功能....");
	}
}

目标类

/**
 * 定义适配器的功能  目标类
 * @author Tino
 *
 */
public interface Target {
	/**
	 * 处理请求的方法
	 */
	void handleReq();
}

适配器类

/**
 * 适配器 (类适配器方式)
 * (相当于usb和ps/2的转接器)
 * @author Tino
 *
 */
public class Adapter extends Adaptee implements Target {
	
	@Override
	public void handleReq() {
		super.request();
	}
}

测试

public static void main(String[] args) {
	Client  c = new Client();
	Target t = new Adapter();
	t.handleReq();
}

2.对象适配器方式

适配器类

/**
 * 适配器 (对象适配器方式,使用了组合的方式跟被适配对象整合)
 * (相当于usb和ps/2的转接器)
 * @author Tino
 *
 */
public class Adapter2  implements Target {
	
	private Adaptee adaptee;
	
	@Override
	public void handleReq() {
		adaptee.request();
	}

	public Adapter2(Adaptee adaptee) {
		super();
		this.adaptee = adaptee;
	}
}

测试

public static void main(String[] args) {
	Adaptee a = new Adaptee();
	Target t = new Adapter2(a);
	t.handleReq();
}

工作中的场景

旧系统改造和升级

JavaSE中使用到适配器模式的场景

  1. java.io.InputStreamReader(InputStream)
  2. java.io.OutputStreamWriter(OutputStream)

标签:Target,适配,适配器,模式,Adaptee,void,设计模式,public
From: https://www.cnblogs.com/ytmm/p/16814542.html

相关文章

  • 什么是严格模式和混杂模式?如何区分?qia
     一枚小棋子于2021-02-2313:31:29发布1362收藏14分类专栏:skill文章标签:html5html版权skill专栏收录该内容9篇文章0订阅订阅专栏一、什么是严格模式和混杂......
  • 结构型模式-外观模式
    概述有些人可能超过股票,但其实大部分人都不太懂,这种没有足够了解证券知识的情况下做股票是很容易亏钱的,刚开始炒股肯定都会想,如果找个懂行的帮帮手就好,其实基金就是个好帮......
  • uniapp + h5开发app自定义导航栏高度适配问题
    创建uniapp项目后通过web-view将h5页面嵌入到app中,此刻的uniapp项目相当于一个壳子,所有内容都在h5页面中,通过手机模拟器看到的页面如下:uniapp有自带的头部,h5页面自定义了......
  • 结构性模式-装饰者模式
    概述我们先来看一个快餐店的例子快餐店有炒面,炒饭这种快餐,可以额外附加鸡蛋,火腿,培根这些配菜,当然这些配菜需要额外加钱,每个配菜的价钱通常不太一样,那么计算总价就比较麻......
  • 失败的 SOA 案例是什么样子的呢?一个反面模式
    SOA行为失败的原因有很多,但是最重要的一个原因是-缺乏服务复用。很难对(上述案例的)未来做出预测。如果你今天没有对自己的服务进行SOA化治理的......
  • 设计模式之一:Java中的简单工厂模式
    Java中的简单工厂模式简单工厂模式(SimpleFactoryPattern),又称静态工厂模式(StaticFactoryPattern)。举两个例子以快速明白Java中的简单工厂模式:女娲抟土造人话说:“......
  • vi编辑器更改文件编码以及模式类型
    ​        作为一名正经运维,我们可能会遇到原文件的编码或者文件模式类型在我们的服务器上无法运行的情况,导致脚本失败甚至无法运行报错的问题,下面说一下检查以及......
  • 设计模式—关于如何提高代码质量(远离脏乱差,人人见了都要夸)
    上一节我们学习了模块层面提高可扩展性的几种设计模式,本节主要学习如何使用设计模式来提高代码质量。提高代码质量的目的?高质量代码是一切性能的基础,无论是可扩展性还是......
  • 设计模式—关于提高可扩展性(方法层面)的学习(更加从容的应对需求变更)
    上一节主要学习了提高复用性的几种设计模式,本节学习方法的可扩展性以及怎么更好的扩展方法。方法是组成程序的基础单元,基础单元的可扩展性是整个程序的可扩展性保障,可扩展......
  • JavaScript 设计模式之代理模式
    代理模式,代理(proxy)是一个对象,它可以用来控制对另一个对象的访问。现在页面上有一个香港回归最想听的金典曲目列表:<ulid="container"><li>我的中国心</li><li>东方......