设计模式-适配器模式
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);
以上是关于设计模式-适配器模式的主要内容,如果未能解决你的问题,请参考以下文章