设计模式之GOF23适配器模式
2024-09-07 14:50:18
结构型模式
核心作用:是从程序的结构上实现松耦合,从而可以扩大整体的 类结构,用来解决更大的问题
适配器模式adapter
实际生活中的例子:转换器
适配器的两种方式:
1,类适配器(继承)
/**需要适配的对象
* @author 小帆敲代码
*
*/
public class Adaptee {
public void request() {
System.out.println("can do something");
}
}
/**
*适配器(类适配器)
* @author 小帆敲代码
*
*/
public class Adapter extends Adaptee implements Target {
*适配器(类适配器)
* @author 小帆敲代码
*
*/
public class Adapter extends Adaptee implements Target {
@Override
public void handleReq() {
super.request();
}
public void handleReq() {
super.request();
}
}
/**
* 客户端
* @author 小帆敲代码
*
*/
public class Client {
public void test(Target t) {
t.handleReq();
}
public static void main(String[] args) {
Client c=new Client();
Target t=new Adapter();
c.test(t);
}
}
* 客户端
* @author 小帆敲代码
*
*/
public class Client {
public void test(Target t) {
t.handleReq();
}
public static void main(String[] args) {
Client c=new Client();
Target t=new Adapter();
c.test(t);
}
}
public interface Target {
public void handleReq();
public void handleReq();
}
2,对象适配器(组合)
/**需要适配的对象
* @author 小帆敲代码
*
*/
public class Adaptee {
public void request() {
System.out.println("can do something");
}
}
* @author 小帆敲代码
*
*/
public class Adaptee {
public void request() {
System.out.println("can do something");
}
}
/**
*适配器(对象适配器)
* @author 小帆敲代码
*
*/
public class Adapter2 extends Adaptee implements Target {
private Adaptee a;
@Override
public void handleReq() {
a.request();
}
public Adapter2() {
}
public Adapter2(Adaptee a) {
this.a=a;
}
}
*适配器(对象适配器)
* @author 小帆敲代码
*
*/
public class Adapter2 extends Adaptee implements Target {
private Adaptee a;
@Override
public void handleReq() {
a.request();
}
public Adapter2() {
}
public Adapter2(Adaptee a) {
this.a=a;
}
}
public class Client2 {
public void test(Target t) {
t.handleReq();
}
public static void main(String[] args) {
Client c=new Client();
Adaptee a=new Adaptee();
Target t=new Adapter2(a);
c.test(t);
}
}
public void test(Target t) {
t.handleReq();
}
public static void main(String[] args) {
Client c=new Client();
Adaptee a=new Adaptee();
Target t=new Adapter2(a);
c.test(t);
}
}
public interface Target {
public void handleReq();
public void handleReq();
}
最新文章
- diff生成补丁与patch打补丁
- bzoj2141排队(辣鸡但是好写的方法)
- PPC MPC85xx e500学习笔记
- java代码生成二维码以及解析二维码
- Command模式
- ubuntu使用ssh登入不执行.bashrc解决方法
- 个人电脑配置FTP服务器,四张图搞定。项目需要,并自己写了个客户端实现下载和上传的功能!
- ECSHOP 支付宝发货确认接口,记录支付宝返回的交易号
- servlet案例
- 『重构--改善既有代码的设计』读书笔记----Extract Method
- 无线网络wifi (WPA/WPA2)密码破解方法
- hdu 1998 奇数阶魔方(找规律+模拟)
- log4j配置文件,用时导入jar包buildPath且将配置文件改成log4j.properties即可
- 微信小程序-表单笔记
- Java开发笔记(三十六)字符串的常用方法
- 谈谈当代大学生学习IT技术的必要性。
- Dockerfile常用指令
- docker 构建 https 私有仓库 Registry
- OracleDBconsoleorcl服务无法启动的原因及解决思路
- find中的-exec参数