📄 adapter2.java
字号:
/*应用需要凡是以后A的对象调用了funA1方法,一定要同时调用B的funB1方法;
B的对象调用了funB2方法,一定要同时调用A的funA2方法;怎么办?不能改变源代码*/
//双向适配模式:组合法
interface IA{
public abstract void funA1();
public abstract void funA2();
}
class A implements IA{
public void funA1(){
System.out.println("A.funA1");
}
public void funA2(){
System.out.println("A.funA2");
}
}
interface IB{
public abstract void funB1();
public abstract void funB2();
}
class B implements IB{
public void funB1(){
System.out.println("B.funB1");
}
public void funB2(){
System.out.println("B.funB2");
}
}
class AB implements IA,IB{//组合A和B,将AB当成A和B来使用
private IA ia;
private IB ib;
public void setIa(IA ia){//可以通过Spring框架来进行装配
this.ia = ia;
}
public void setIb(IB ib){
this.ib = ib;
}
///功能编写
public void funA1(){
ia.funA1();//这句话如果去掉,就是功能替换
ib.funB1();
}
public void funB2(){
ib.funB2();
ia.funA2();
}
//重写其他功能,以免丢失
public void funA2(){
ia.funA2();
}
public void funB1(){
ib.funB1();
}
}
public class Adapter2{//客户端,最终使用方
public static void main(String args[]){
AB ab = new AB();
ab.setIa(new A());
ab.setIb(new B());
ab.funA1();
ab.funB2();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -