Pattern: Adapter 简单实现

来源:互联网 发布:c .net编程题 编辑:程序博客网 时间:2024/05/17 23:04

在 android 编程中,形形色色的 Adapter 到处可见,其复杂的设计让人惊嘘不已!


结合自己的亲身体会,跟大家聊聊适配器这这种设计模式。


欢迎拍砖!


很形象的一个例子


现在你手头上有一台笔记本,需要充电,不然最后一关抢宝藏的游戏可能要泡汤了,怎么办?

很简单,找个适配器充电呗!

于是乎,适配器找到了,电源是现成的,终于可以重新开战了!


这个过程很简单,但是蕴涵了今天所说的适配器(Adapter)。

试想一下,没有适配器的话,你不可能把 220V 的电压直接接在你心爱的笔记本上面吧?!


适配器,简单来说就是整合已有的资源供别人使用的一个工具。


软件实现


具体实现有两中方式,使用继承或者聚合(可以说是委派)。


Power.java


package mark.zhang;public class Power {public void supply() {System.out.println("power is suppling voltage......"); }}

IConvertor.java


package mark.zhang;public interface IConvertor {public abstract void convert();}

PC.java


package mark.zhang;public class PC {Adapter mAdapter;public void setAdapter(Adapter adapter) {mAdapter = adapter;mAdapter.convert();work();}public void work() {System.out.println("pc is working......");}}

接下来可以设计 Adapter


聚合的方式实现 Adapter.java


package mark.zhang;public class Adapter implements IConvertor {Power power;public Adapter() {power = new Power();}@Overridepublic void convert() {power.supply();}}


简单的实现了 Power 适配器。


继承的方式实现 Adapter.java


package mark.zhang;public class Adapter extends Power implements IConvertor {@Overridepublic void convert() {supply();}}


客户端调用 Client.java


package mark.zhang;public class Client {public static void main(String[] args) {PC pc = new PC();Adapter a = new Adapter();pc.setAdapter(a);}}


可以看出,无论那种方式实现 Adapter,Adapter 都实现了接口方法,目的就是调用 Power 的 supply.


但是这种简单的实现缺点还是很多的


比如,各个类设计过于具体(相对于抽象来说),程序没有弹性,没有面向抽象(或者接口)编程的思想。


还好,今天只是介绍一下 Adapter,复杂的实现,后面再说。









原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 鼻炎总是打喷嚏流鼻涕怎么办 新生儿流黄鼻涕怎么办 感冒鼻塞流鼻涕喷嚏怎么办 宝宝总是打喷嚏流鼻涕怎么办 不停的打喷嚏流鼻涕怎么办 宝宝不停打喷嚏流鼻涕怎么办 孕妇感冒流鼻涕打喷嚏怎么办 孕妇感冒咳嗽流鼻涕怎么办 鼻子痒流鼻涕流眼泪怎么办 天冷鼻子流鼻涕怎么办 感冒流水样鼻涕怎么办 一直有清水鼻涕怎么办 孩子总打喷嚏鼻塞怎么办 4岁儿童流鼻涕怎么办 孕妇清鼻涕不停怎么办 感冒流鼻水怎么办速效办法 一岁宝宝流清涕怎么办 咳嗽喉咙痛有痰怎么办 冻感冒了流鼻涕怎么办 吸烟经常嗓子疼怎么办 擦鼻涕擦破了怎么办 感冒鼻水流不停怎么办 流鼻涕鼻子都擦红了怎么办 鼻子不停的流水怎么办 擦鼻涕耳朵疼怎么办 鼻涕跟水一样怎么办 鼻涕水多打喷嚏怎么办 买来的鼻涕泥是水怎么办? 鼻炎鼻涕跟水怎么办 出门忘记带钥匙怎么办 总留鼻涕水怎么办 流像水一样的鼻涕怎么办 出门忘记带洗面奶怎么办 一侧鼻子流清水怎么办 慢性肠胃炎犯了怎么办 儿子拉肚肚子疼怎么办 皮肤太容易过敏怎么办 过敏脸一直不好怎么办 脸上突然过敏怎么办急救 脸过敏发红疼怎么办 脸上突然过敏了怎么办