二十三种设计模式之:适配器模式
适配器模式将某个类的接口转换成客户期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性的问题。主要分为三类:类的适配器模式,对象的适配器模式,接口的适配器模式。
1.类的适配器模式
实现思想是:有一个类Source,拥有一个方法method1,待适配;目标接口是Targetable,通过Adapter类,将Source类的功能扩展到Targetable中,具体代码如下:
public class Source{
public void method1(){
System.out.println("This is Source's method1");
}
}
public interface Targetable{
public void method1();
public void method2();
}
public class Adapter extends Source implements Targetable{
public void method1(){
System.out.println("This is Adapter's method1");
}
@Override
public void method2(){
System.out.println("This is Adapter's method2");
}
}
测试类:
public class AdapterTest{
public static void main(String [] args){
Targetable targetable = new Adapter();
targetable.method1();
targetable.method2();
}
}
2.对象的适配器模式
public class Wrapper implements Targetable{
private Source source;
public Wrapper(Source source){
super();
this.source = source;
}
@Override
public void method2(){
System.out.println("This is Targetable's method2");
}
@Override
public void method1(){
source.method1();
}
}
测试类:
public class AdapterTest{
public static void main(String [] args){
Source source = new Source();
Targetable wrapper = new Wrapper(source);
wrapper.method1();
wrapper.method2();
}
}
3.接口的适配器模式
UML图如下:
接口的适配器模式的原理是:通过抽象类Wrapper实现Sourceable接口的方法,然后其他的类可以通过抽象类Wrapper来选择性的实现接口的方法。
代码如下:
public Interface Sourceable(){
public void method1();
public void method2();
}
public abstract class Wrapper implements Sourceable{
@Override
public void method1(){}
@Override
public void method2(){}
}
public class SourceSub1 extends Wrapper{
public void method1(){
System.out.println("This is the Interface's first Sub1!");
}
public void method2(){
System.out.println("This is the Interface's seconds Sub2!");
}
}
main方法:
public class Wrapper{
public static void main(String [] args){
Sourceable sourceSub1 = new SourceSub1();
sourceable sourceSub2 = new SourceSub2();
sourceSub1.method1();
sourceSub1.method2();
sourceSub2.method1();
sourceSub2.method2();
}
}
转载于:https://www.cnblogs.com/qadyyj/p/5645963.html
二十三种设计模式之:适配器模式相关推荐
- 二十三种设计模式[6] - 适配器模式(Adapter Pattern)
前言 适配器,属于类结构型模式.<设计模式 - 可复用的面向对象软件>一书中将之描述为" 将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可 ...
- Java的二十三种设计模式(适配器模式(Adapter)、对象的适配器模式)
适配器模式(Adapter) 适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题.主要分为三类:类的适配器模式.对象的适配器模式.接口的适配器模式 ...
- 二十三种设计模式-六大原则
二十三种设计模式 一.创建型: 单例模式.工厂模式.抽象工厂模式.原型模式.建造者模式: 二.结构型: 代理模式,装饰器模式.适配器模式.外观模式.组合模式.享元模式.桥梁模式: 三.行为型: 策略模 ...
- 深入理解常见的二十三种设计模式
深入理解常见的二十三种设计模式 文章目录 深入理解常见的二十三种设计模式 一.设计模式的分类 1.1 创建型(五种) 1.2 结构型(七种) 1.3 行为型(十一种) 二.创建型 2.1 单例模式 2 ...
- Java二十三种设计模式 之代理(proxy)
Java二十三种设计模式 之代理(proxy) 今天我们学习一下静态代理和动态代理 我们来看代码(写一个坦克运行了多少时间): 第一种方法: public calss Tank implements ...
- 二十三种设计模式(第十二种)-----代理模式(Proxy)
二十三种设计模式(第十二种)-----代理模式(Proxy) 尚硅谷视频连接https://www.bilibili.com/video/BV1G4411c7N4?from=search&se ...
- 二十三种设计模式之原型模式
今天继续探讨GOF二十三种设计模式的原型模式,原型模式也是属于创建型模式的一种 原型模式通俗的讲就是对象复制的过程,即通过一个原型对象,我可以得到一个该对象的克隆. 下面来看下原型模式的第一种写法-- ...
- 第二部分:二十三种设计模式解读——什么是工厂方法模式
二十三种设计模式解读--什么是工厂方法模式 author:陈镇坤27 日期:2022年2月10日 修改日期:2022年6月23日 文章目录 二十三种设计模式解读--什么是工厂方法模式 一.工厂方法模式 ...
- Java实现二十三种设计模式(五)—— 十一种行为型模式 (中)——解释器模式、迭代器模式、中介者模式、备忘录模式
Java实现二十三种设计模式(五)-- 十一种行为型模式 (中)--解释器模式.迭代器模式.中介者模式.备忘录模式 一.解释器模式 我国 IT 界历来有一个汉语编程梦,虽然各方对于汉语编程争论不休,甚 ...
- Java 二十三种设计模式
一.单例模式 定义 Ensure a class has only one instance, and provide a global point of access to it.(确保某一个类只有 ...
最新文章
- 角色转移服务器维护怎么回事,服务器互通及游戏角色转移说明
- 【React 实战教程】从0到1 构建 github star管理工具
- Java:带符号右移和无符号右移
- Highly Available (Mirrored) Queues
- 腾讯高性能图计算框架Plato及其算法应用
- Ubuntu8.10安装小记
- python错误集合
- 深圳美景品牌策划机构:美景推动国际品牌MASHIMARO闪电招商,3天签约211家
- 12月22号至27号进度报告
- CE教程 第八章 《注入++》
- 两年前疫情刚开始时写的手机上的悬浮贴图软件:悬浮便利贴 - 在手机屏幕上贴图、贴文字
- Flash加速功能实现
- git 报错did not match any file(s) known to git
- 在家干什么副业好?工作之余做什么副业比较好
- echarts之静态与动态地图
- linux多线程编程--学习笔迹4
- Java中文乱码破碎重组_Java 关于中文乱码问题的解决方案与经验
- 165体重_女生165cm标准体重
- Pinia 详细教程
- COM, OLE技术概述
热门文章
- DE26 Continuation: Repeated Real Eigenvalues
- softmax多分类
- pycharm下的第一个函数程序
- java字符编码详解_Java中字符编码格式详解
- php把这两个二维数组合并,两个二维数组的合并
- 如何使用scikit-learn工具来进行PCA降维
- 百度推广怎么样做才可以有效果呢?
- glide源码中包含了那种设计模式_源码中的设计模式-单例模式
- java判断jd安装,java - 安装和使用 java 反编译应用: jd-compiler ,以及命令行的使用...
- java div2_系统学习 javaweb2----HTML语言2