爱做网站网址,公司建网站有何意义,郑州seo网络推广,水网站建设结构型#xff1a;Adapter与Facade#xff08;适配器和外观模式#xff09; 一般作为阅读材料#xff0c;首先想要明确的是我现在了解的设计模式的初衷#xff0c;即为了解决什么问题。 适配器#xff0c;如果有买过港版Iphone在内地使用的人应该会有三角大插头必须接… 结构型Adapter与Facade适配器和外观模式 一般作为阅读材料首先想要明确的是我现在了解的设计模式的初衷即为了解决什么问题。 适配器如果有买过港版Iphone在内地使用的人应该会有三角大插头必须接一个转换器才能在一般的插座上使用的情况当然这只是比较直观的感受。其实我们平时用的手机充电器都是属于适配器试想如果我们没有这个充电器我们如何利用普通插座给手机充电 适配器的定义将手头上所持有的接口转换成我们需要的接口业务场景经常是为了适配旧程序或者对接2套系统的时候使用当你无法使你的对接系统做修改的时候往往需要我们自己做适配。 适配器的结构 目标对象-target 被适配者-adapted 适配器-adapter demo package top.gabin.oa.web.design.adapter;/*** 想办法** author linjiabin on 16/5/5*/
public interface Think {String idea();
} package top.gabin.oa.web.design.adapter;/*** 土英语:诸葛亮** author linjiabin on 16/5/5*/
public class VariousGeBright implements Think {Overridepublic String idea() {return 草船借箭;}
} package top.gabin.oa.web.design.adapter;/*** 补鞋匠* author linjiabin on 16/5/5*/
public class Cobbler implements Think {private static int count 0;Overridepublic String idea() {if (count 0 count % 10 0) {return 草船借箭;}System.out.println(我想不到);count;return null;}
} package top.gabin.oa.web.design.adapter;/*** 伪装成聪明人的适配器* author linjiabin on 16/5/5*/
public class SmartAdapter extends VariousGeBright {private Cobbler cobbler;public SmartAdapter(Cobbler cobbler) {this.cobbler cobbler;}Overridepublic String idea() {String idea null;while ((idea cobbler.idea()) null) {}return idea;}
} package top.gabin.oa.web.design.adapter;import org.junit.Test;/*** 测试适配器的效果** author linjiabin on 16/5/5*/
public class TestAdapter {Testpublic void testAdapter() {Cobbler cobbler new Cobbler();VariousGeBright variousGeBright new SmartAdapter(cobbler);String idea variousGeBright.idea();System.out.println(idea);}} 输出结果 我想不到
我想不到
我想不到
我想不到
我想不到
我想不到
我想不到
我想不到
我想不到
我想不到
草船借箭 这个例子是想借鉴三个臭皮匠赛过诸葛亮的寓意我通过适配器将一个补鞋匠伪装成一个诸葛亮实际上诸葛亮只需要思考一次就能想到好主意而补鞋匠需要10次之后才能想到。实际上适配器就是一个伪装面具当然你也可以把他当做是一种易容术。 外观模式我们可以把它理解成一个public方法下面调用了好几个private方法。我承认这种语言只有程序员懂那我们可以换一种方式沟通这其实有点像宏命令说白了其实这是一组命令而不是一个命令。在生活场景中我前几天就有遇到一个刚好跟大家分享一下。我们家有一个空调遥控器上面只有5、6个按钮大致是电源、制冷、辅热这样的我一想这功能也太少了吧于是我扒了遥控器发现里面还有另外一组按钮只是外层的按钮【比较大】因为外层按钮包裹了内层的2个按钮。 其实外观模式在类上面相当简单其目的也仅仅是提供一个高级入口隐藏子系统接口的调用。 大概是这样子 --------------------------------- | FacadeInterface | | -SubSystemInterface | | -SubSystemInterface | |------------------------------- | | seniorEntrance() | ---------------------------------- SubSystemInterface seniorEntrance方法调用了私有的SubSystemInterface实现对象的各种方法但这并不需要告诉你你只需要只有有这么一个接口就好了。 转载于:https://www.cnblogs.com/gabin/p/5457130.html