适配器模式也叫做包装模式;就是把内部结构包装(适配)成用户期待的格式,使得可以兼容使用
/** * @author maikec * @date 2019/5/9 */ public interface print { /** * 打印带括号的消息 */ void printparen(); /** * 打印带*号的消息 */ void printaster(); } /** * 实际使用中的类 * @author maikec * @date 2019/5/9 */ public class banner { private final string msg; public banner(string msg){ this.msg = msg; } public void showwithparen(){ system.out.println( "(" + msg + ")" ); } public void showwithaster(){ system.out.println( "*" + msg + "*" ); } } /** * @author maikec * @date 2019/5/9 */ public class printbanneradapter extends banner implements print { public printbanneradapter(string msg) { super( msg ); } @override public void printparen() { showwithparen(); } @override public void printaster() { showwithaster(); } } /** * @author maikec * @date 2019/5/9 */ public class adapterextenddemo { public static void main(string[] args) { print print = new printbanneradapter( "hello adapter" ); print.printaster( ); print.printparen(); } }
/** * 需求 * @author maikec * @date 2019/5/9 */ public abstract class print { /** * 打印带括号的消息 */ public abstract void printparen(); /** * 打印带*号的消息 */ public abstract void printaster(); public void i(){ } } /** * 实际使用中的类 * @author maikec * @date 2019/5/9 */ public class banner { private final string msg; public banner(string msg){ this.msg = msg; } public void showwithparen(){ system.out.println( "(" + msg + ")" ); } public void showwithaster(){ system.out.println( "*" + msg + "*" ); } } /** * @author maikec * @date 2019/5/9 */ public class printbanneradapter extends print { private banner banner; public printbanneradapter(banner banner){ this.banner = banner; } @override public void printparen() { banner.showwithparen(); } @override public void printaster() { banner.showwithaster(); } } /** * @author maikec * @date 2019/5/9 */ public class adapterreferencedemo { public static void main(string[] args) { print print = new printbanneradapter( new banner( "hello adapter" ) ); print.printaster(); print.printparen(); } }
zh.wikipedia.org/wiki/适配器模式 维基关于适配器模式
github.com/maikec/patt… 个人github设计模式案例
引用该文档请注明出处
如对本文有疑问, 点击进行留言回复!!
网友评论