设计模式-适配器模式

Posted 猫二哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式-适配器模式相关的知识,希望对你有一定的参考价值。

适配器模式

谢谢

你好!

1适配器概念

是一种转换器,把不兼容接口兼容了,也可以理解为把一个类的接口转成另外一个接口。分为结构适配器(调用)和类适配器(继承)。

2 3个角色

Target:目标,就是要实现的功能,接口或者抽象类
Adaptee:适配者,就是适配器中的组件,可以理解为真实处理业务需求的类。
Adapter:适配器,转换器,通过继承或者引用适配者的对象,把适配者接口转成目标接口

3 uml图

4 demo

package com.j.designpattern.adapter;

public class ClassAdapterTest 
    public static void main(String[] args) 
        Adaptee adaptee = new Adaptee();
        Target target = new Adapter(adaptee);
        target.request();

    


/**
 * 目标
 */
interface Target
    public void request();


/**
 * 我是适配者
 */
 class Adaptee 

     public void realRequest() 
        System.out.println("我是适配者哈");
     


/**
 * 我是适配器
 */
class Adapter implements Target 
    Adaptee adaptee;

    public Adapter(Adaptee adaptee) 
        this.adaptee = adaptee;
    
    @Override
    public void request() 
        adaptee.realRequest();
    

5真实案列 多种缓存统一使用方式

把redis和caffine的缓存使用方式统一了

package com.j.designpattern.adapter;


/**
 * @version 1.0 created by wangqi_yy on 2020/8/4 9:30 下午
 */
public class CacheAdapterTest3 
    public static void main(String[] args) 
        CommonCache commonCache = new RedisAdapter(new RedisCommonCache());
        commonCache.get("key1");
        CommonCache commonCache2 = new CaffineAfapter(new CaffineCommonCache());
        commonCache2.get("key1");
        //这样就可以在源头选择是使用redis还是caffine了

    





/**
 * 目标缓存操作
 */
interface CommonCache

    String get(String key);

    void set(String key, String value);


/**
 * redis缓存操作
 */
class RedisCommonCache 

    String get(String key)
        System.out.println("redis客户端get缓存");
        return key;
    

    void set(String key, String value)
        System.out.println("redis客户端set缓存");
    


/**
 * 内存缓存
 */
class CaffineCommonCache 

    String get(String key)
        System.out.println("Caffine客户端get缓存");
        return key;
    

    void set(String key, String value)
        System.out.println("Caffine客户端set缓存");
    


/**
 * redis适配器
 */
class RedisAdapter implements CommonCache
    RedisCommonCache redisCommonCache;

    public RedisAdapter(RedisCommonCache redisCommonCache) 
        this.redisCommonCache = redisCommonCache;
    
    @Override
    public String get(String key) 
        return redisCommonCache.get(key);
    

    @Override
    public void set(String key, String value) 
        redisCommonCache.set(key,value
        );
    


class CaffineAfapter implements CommonCache 

    CaffineCommonCache caffineCommonCache;

    public CaffineAfapter(CaffineCommonCache caffineCommonCache) 
        this.caffineCommonCache = caffineCommonCache;
    
    @Override
    public String get(String key) 
        return caffineCommonCache.get(key);
    

    @Override
    public void set(String key, String value) 
        caffineCommonCache.set(key,value);
    

以上是关于设计模式-适配器模式的主要内容,如果未能解决你的问题,请参考以下文章

适配器模式

php常见设计模式

Python 设计模式 — 结构型模式 — 适配器模式

Python 设计模式 — 结构型模式 — 适配器模式

设计模式之适配器

适配模式(Adapter)