博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
适配器
阅读量:4315 次
发布时间:2019-06-06

本文共 1186 字,大约阅读时间需要 3 分钟。

  如果一个对象实现的接口不满足某个方法的参数要求,又想要这个方法调用这个对象的时候,使用中间对象适配器来解决这个矛盾。

  

  客户类Clinet#MyRequest方法需要传入一个实现了Target接口的对象,并调用Target#request方法。但此时只有实现了 specialTarget了接口的Adaptee对象,在不改变源码的情况下使用适配器Adaptor来调和矛盾。首先从语法角度Adaptor一定要实现Target接口,这样才能传入MyRequest方法,而且Adaptor还要能够调用Adaptee的specialRequest去满足request调用的需求,我更喜欢把这种模式成为欺骗消费者模式。

  欺骗消费者的方式有两种,一种是继承Adaptee这种被称为类适配器,一种是把Adaptee当做内部的属性被称为对象适配器。

public class Adaptee implements specialTarget{
@Override public void specialRequest() {
System.out.println("我是Adaptee 我只实现了specialTarget#specialRequest 爱用不用"); } }
public class Client {    public void MyRequest(Target target){        System.out.println("我是客户 我现在要一个实现了target的对象");        target.request();    }    public static void main(String[] args) {        Client client = new Client();        Adaptee adaptee = new Adaptee();        //client.MyRequest(adaptee);        Adaptor adaptor = new Adaptor();        client.MyRequest(adaptor);    }}

 

public class Adaptor extends  Adaptee implements Target{    @Override    public void request() {        System.out.println("我是Adaptor 你们的矛盾我来解决");        super.specialRequest();    }}

 

转载于:https://www.cnblogs.com/AshOfTime/p/10632273.html

你可能感兴趣的文章
DB Intro - MySQL and MongoDB
查看>>
Practical Mathematical Handwriting
查看>>
[zz]kvm环境使用libvirt创建虚拟机
查看>>
bzoj1059 [ZJOI2007]矩阵游戏
查看>>
JDK配置步骤
查看>>
springcloud微服务实战--笔记
查看>>
View(视图)——菜单Menu
查看>>
uva 408 Uniform Generator
查看>>
SharePoint 2010 类似人人网站内信功能实施
查看>>
CF 327E(Axis Walking-状态压缩Dp-lowbit的使用)
查看>>
object对象java 利用反射 从数据库取出数据对象list 类似hibernate
查看>>
插入返回ibatis 的selectKey 实现插入数据后获得id
查看>>
vim 程序编辑器
查看>>
LIS(单调队列优化 C++ 版)(施工ing)
查看>>
如何为winform程序打包(图解)
查看>>
如何给行内元素设置宽高?
查看>>
刚接触Vuex
查看>>
四种加载React数据的技术对比(Meteor 转)
查看>>
Airthmetic_Approching
查看>>
操作文本文件
查看>>