java适配器模式
定义:将一个类的接口转换成用户期望的另一个接口
使原本接口不兼容的类可以一起工作
结构型
应用场景:
已经存在的类,他的方法和需求不匹配时(方法结果相同或相似)
功能类似而接口不相同的情况下的解决方案
优点:
能提高类的透明性和复用,现有的类复用但不需要改变
目标类和适配器 类解耦,提高程序扩展性
符合开闭原则
类:
1 2 3 4 5 6 7 | public class Adapteee { public void adapteeRequest(){ System.out.println( "被适配着的方法" ); } } public interface Target {<br> void request();<br>} public class ConcreteTarget implements Target {<br><br> public void request() {<br> System.out.println( "目标方法" );<br> }<br>} public class Adapter extends Adapteee implements Target{<br> public void request() {<br> super .adapteeRequest();<br> }<br>} public class Test {<br> public static void main(String[] args) {<br> Target target= new ConcreteTarget();<br><br> target.request();<br><br> Target adapterTarget= new Adapter();<br> adapterTarget.request();<br> }<br>} |
对象:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public class Adapteee { public void adapteeRequest(){ System.out.println( "被适配着的方法" ); } } public class ConcreteTarget implements Target { public void request() { System.out.println( "目标方法" ); } } public class Adapter implements Target{ private Adapteee adapteee= new Adapteee(); public void request() { adapteee.adapteeRequest(); } } public class Test {<br> public static void main(String[] args) {<br> <br> Target target= new ConcreteTarget();<br><br> target.request();<br><br> Target adapterTarget= new Adapter();<br> adapterTarget.request();<br> }<br>} |
实际应用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | public class AC220 { public int outputAC220v(){ int output= 220 ; System.out.println( "输出交流电" +output+ "V" ); return output; } } public interface DC5 { int outputDC5V(); } public class PowerAdapter implements DC5{ private AC220 ac220= new AC220(); public int outputDC5V() { int adapterInput=ac220.outputAC220v(); int adapterOutput=adapterInput/ 44 ; System.out.println( "使用PowerAdapter输入AC:" +adapterInput+ "V" + "输出DC:" +adapterOutput+ "V" ); return adapterOutput; } } public class Test { public static void main(String[] args) { DC5 dc5= new PowerAdapter(); dc5.outputDC5V(); } } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步