码迷,mamicode.com
首页 > 其他好文 > 详细

GOF23设计模式之适配器模式

时间:2019-03-11 00:45:11      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:pac   不能   super   write   组合模式   demo   struct   aos   main   

GOF23设计模式之适配器模式

结构型模式:

核心作用:是从程序的结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大的问题。

分类:适配器模式、代理模式、桥接模式、装饰模式、组合模式、外观模式、享元模式

什么是适配器模式?

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

模式中的角色

目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。

需要适配的类(Adaptee):需要适配的类或适配者类。

适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。

package cn.taosir.design.structure.adapter;

public class AdapterDemo {
    public void test(Target t) {t.handleReq();}
    public static void main(String[] args) {
        AdapterDemo ad=new AdapterDemo();
        Adaptee adaptee=new Adaptee();
        
        //类适配器方式
        //Target t=new Adapter();
        
        //对象适配器方式
        Target t=new Adapter2(adaptee);
        
        ad.test(t);
    }
}

/**
 * 被适配的类
 */
class Adaptee{
    public void request() {System.out.println("可以完成客户请求的需要的功能!");}
}

interface Target{
    void handleReq();
}

/**
 * 适配器(类适配器方式)
 */
class Adapter extends Adaptee implements Target{
    @Override
    public void handleReq() {
        super.request();
    }
}

/**
 * 适配器(对象适配器方式)
 */
class Adapter2 implements Target{

    private Adaptee adaptee;
    
    @Override
    public void handleReq() {
        adaptee.request();
    }
    
    public Adapter2(Adaptee adaptee) {
        super();
        this.adaptee=adaptee;
    }
}

工作中的场景

1)经常用来做旧系统改造和升级

2)如果我们的系统开发之后再也不需要维护,那么很多模式都是没必要的,但是不幸的是,事实却是维护一个系统的代价往往是开发一个系统的数倍。

我们学习中见过的场景

1)java.io.InputStreamReader(InputStream)

2)java.io.OutputStreamWriter(OutputStream)

GOF23设计模式之适配器模式

标签:pac   不能   super   write   组合模式   demo   struct   aos   main   

原文地址:https://www.cnblogs.com/it-taosir/p/10508219.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!