2.设计模式---Adapter模式
Adapter模式也就是适配器模式,最常见的就是这个:码农必备--------------》笔记本电源适配器:
那么这玩意到底是干嘛的??
手工画图一张:
220V----------------------》11V这中间就需要适配器来适配,但是最后电脑也并不知道这中间到底怎么搞定的,他只明白他链接的是适配器,调用的是适配器,其他的就适配器在维护了!
适配器模式分2种:
1.类的继承
2.委托
先说第一种:
上代码后,在分析:
先上220V电压
package adapter.model; /** * 相当于小jie妹 * @author zengrong * */ public class Banner { private String name; public Banner(String name) { super(); this.name = name; } public void showwithParen() { System.out.println("--特殊可爱小武器---"+name+"-----"); } public void showWithAster() { System.out.println("---200块真不贵-"+name+"----"); } }
再来电脑这端
package adapter.model; /** * 相当于你自己 * @author zengrong * */ public interface Print { /** * 你的需求 */ public abstract void printHow(); /** * 一晚上how much */ public abstract void printOneNightHowMuch(); }
适配器:
package adapter.model; /** * 相当于小jie妹的"经济人" * @author zengrong * 小jie妹的经纪人肯定要知道小jie妹的想的啥,当然继承了就完全知道了。 * 经纪人为了给小jie妹接*,肯定要实现你的方法,来满足你的需求! * 哈哈。。。。 * *这是适配器模式中得:类继承的适配模式 * * * */ public class PrintBanner extends Banner implements Print { public PrintBanner(String name) { super(name); } @Override public void printHow() { showWithAster(); } @Override public void printOneNightHowMuch() { showwithParen(); } }
main:
package adapter.main; import adapter.model.Print; import adapter.model.PrintBanner; public class App { public static void main(String[] args) { Print banner = new PrintBanner("凤姐"); banner.printHow(); banner.printOneNightHowMuch(); } }
结果:
--------------------------华丽分割线-------------------------------------------------------------------------------------------------------
适配模式----类继承:在这里,我们的适配器必须知道需要适配的一方,是适配的需求,不然也没办法完成适配!
--------------------------------------------------------------------------------------------------------------------------------------------------
适配器模式-----委托:相当于这种找小jie妹的事情我不好意思亲自出面,委托出去!
代码相似:
贴下:
package adapter.model; /** * 相当于小jie妹 * @author zengrong * */ public class BannerTwo { private String name; public BannerTwo(String name) { super(); this.name = name; } public void showwithParen() { System.out.println("--特殊可爱小武器---"+name+"-----"); } public void showWithAster() { System.out.println("---200块真不贵-"+name+"----"); } }
package adapter.model; /** * 相当于小jie妹的"经济人" * @author zengrong * 小jie妹的经纪人肯定要知道小姐妹的想的啥,当然继承了就完全知道了。 * 经纪人为了给小jie妹接*,肯定要实现你的方法,来满足你的需求! * 哈哈。。。。 * *这是适配器模式中得:类继承的适配模式 * * * */ public class PrintBannerTwo extends PrintTwo { private BannerTwo Banner2; public PrintBannerTwo(String str) { super(); this.Banner2=new BannerTwo(str); } @Override public void printHow() { Banner2.showWithAster(); } @Override public void printOneNightHowMuch() { Banner2.showWithAster(); } }
package adapter.model; public abstract class PrintTwo { /** * 你的需求 */ public abstract void printHow(); /** * 一晚上how much */ public abstract void printOneNightHowMuch(); }
适配器弥补了,类之间的缝隙,复用了其他类中得方法,这样也会减少编写多个类,
但是不是所有的类都要使用适配,例如2个完全功能不相同的完全没必要适配!
我们在代码的升级过程中,旧的代码和新的代码之间就可以使用适配来进行更新改造!
-----------------------------------------睡觉!!