2018年12月25日 12:56
原创作品,转载时请务必以超链接形式标明文章原始出处,否则将追究法律责任。
适配器,顾名思义,就是将不兼容的东西适配在一起工作。比如买了两个插线板,一个是插头是三相,插板上全是三个孔用来插空调,微波炉,冰箱等。另一个是两相,插板上都是两个孔用来插电视机,电视猫,路由器等。但是我们的墙上只有两个三相的接口,那么这时候两相插头的插板将无法工作,无法工作,意味着一部分电器不能工作。
这时候我们就需要先找一个能插两口的转换器,再将两相的这个插板插到转换器的三相插口上,这时候电器不论三相还是两相都可以插上去。
那么我们先定义一下接口,即墙上的插口,只能支持三相的插头。
public interface 插板接口 { void 插三个口(); }
再下来,我们先把三相的插头插进去,让他工作起来。
public class 三相插板 : 插板接口 { public void 插三个口() { Console.WriteLine("三相插板工作了"); } }
再下来,我们买一个两相插头的插板,插两个口才能工作。
public class 两相插板 { public void 插两个口() { Console.WriteLine("两相插板工作了"); } }
但是很明显,它无法插到墙上的插口上,这时我们的转换器登场了。
public class 插板接口适配 : 插板接口 { 两相插板 两相插板对象; public 插板接口适配(两相插板 两相插板对象) { this.两相插板对象 = 两相插板对象; } public void 插三个口() { this.两相插板对象.插两个口(); } }
通过转换器,我们的两相插板可以顺利工作起来
插板接口 三相插板实例 = new 三相插板(); 插板接口 两相插板实例 = new 插板接口适配(new 两相插板()); 三相插板实例.插三个口(); 两相插板实例.插三个口();
最终的执行结果就是
三相插板工作了 两相插板工作了
当然了,有的人说再买一个插板不就完了。当然,这要看成本,比如一个ps接口的键盘,在电脑上没有ps接口,只有usb接口,你是买转换器转成usb呢,还是再买一个usb口的键盘,当然我们用转换器比较划算。
设计模式不一定非要用,只是在特定场景下可以帮你解决一些现实问题。
上一篇 设计模式之-装饰模式
下一篇 设计模式之-观察者模式
发表评论
匿名
用户评论
暂无评论