适配器模式(adapter pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。
外国出差,给笔记本充电,德国有一套德国标准,中国有一套中国标准(国标),国际有一套国际标准,插排上有不同的孔,二孔、三孔等等(案例不一定真实)。。。
package com.cyb.ssm.design_pattern.adapter; /** * 德国标准的插排 * @author apple * */ public interface dbsocket { void charge(); }
package com.cyb.ssm.design_pattern.adapter; /** * 德国标准的插排 * @author apple * */ public class dbsocketimpl implements dbsocket { @override public void charge() { system.out.println("使用两眼插孔充电。。。"); } }
package com.cyb.ssm.design_pattern.adapter; /** * 中国标准的插排 * * @author apple * */ public interface gbsocket { void charge(); }
package com.cyb.ssm.design_pattern.adapter; /** * 中国标准的插排 * @author apple * */ public class gbsocketimpl implements gbsocket { @override public void charge() { system.out.println("使用三眼插孔充电。。。。"); } }
package com.cyb.ssm.design_pattern.adapter; /** * 国际标准插排 * * @author apple * */ public interface gjbzsocket { void charge(); }
package com.cyb.ssm.design_pattern.adapter; /** * 国际标准插排 * * @author apple * */ public class gjbzsocketimpl implements gjbzsocket { @override public void charge() { system.out.println("使用四眼插孔充电。。。。"); } }
package com.cyb.ssm.design_pattern.adapter; /** * 适配器(将不同类型的国标和德标都适配成国际标准) * * @author apple * @param <t> * */ public class socketadapter<t> implements gjbzsocket { private t socket; public socketadapter(t socket) { super(); this.socket = socket; } @override public void charge() { if (socket instanceof gbsocket) { // 适配国标 ((gbsocket) socket).charge(); // 强转数据类型,执行 } else if (socket instanceof dbsocket) { // 适配德标 ((dbsocket) socket).charge(); // 强转数据类型,执行 } else if (socket instanceof gjbzsocket) { // 适配国际标准 ((gjbzsocket) socket).charge(); // 强转数据类型,执行 } } }
package com.cyb.ssm.design_pattern.adapter; import org.junit.test; /** * 适配器模式: 将不同类型的对象可以通过适配模式,在一起工作 * * @author apple * */ public class testadapter { @test public void test() { // 德标 socketadapter<dbsocketimpl> socketadapter1 = new socketadapter<dbsocketimpl>(new dbsocketimpl()); socketadapter1.charge(); // 国标 socketadapter<gbsocketimpl> socketadapter2 = new socketadapter<gbsocketimpl>(new gbsocketimpl()); socketadapter2.charge(); // 国际标准 socketadapter<gjbzsocketimpl> socketadapter3 = new socketadapter<gjbzsocketimpl>(new gjbzsocketimpl()); socketadapter3.charge(); } }
如对本文有疑问, 点击进行留言回复!!
荐 厉害了!阿里P8架构师用4大技术文档带你深入解读爆火的中台战略
FlowableException: Error initialising dmn data model报错问题
网友评论