设计模式之adapter bridge模式

先说adapter模式

adapter中文为适配器模式,目的和想法很简单,就是一种封装,只不过这种封装是为了从接口A到达接口B,啥个意思呢,A已经提供功能了,但是另外一个东西只能使用B的接口,所以得弄一个东西将A转换成B接口,这个转换器就是adpater。从这个描述可以看到,我们实际上有三个东西。

A----adapter-----B。其中A叫adaptee,B叫target。

怎么实现呢?通常有2种方法:

adapter---继承A,B,这样使用B的时候,实际是adapter对象,这叫类继承。

另外一种是adapter包含一个A,而继承B,这样通过adapter的转发机制把工作交给A--实例来做。

adapter相对比较简单,但是在日常设计的时候一定要想到层次的概念。

bridge是桥接模式,它的主要目的是把功能实现和功能定义分开,尤其是在不同平台上的时候。

组成对象有: product,这个是一个接口,在不同平台上有具体的concrete-product,那么product的功能,你可以在不同的concrete-product中去实现,而concrete product本身就是平台A,B上的实行,这是一种方法,但是:

1 如果平台个数很多,那么你在整个产品类中就得不停得增加子类,麻烦....

2 所以就把实现分离到单独的类中,叫implementor中去了。那么只要在product中包含一个指向implementor的指针,具体的工作就有concrete-impl去完成就行了。product不一定是接口了..。

刚才想了个例子,这个要和factory方法来比较才能搞明白。

比如,netserver类,跨平台,factory方法就是实现winnetserver,linuxnetserver,以后要开发别的啥比如netclient,就比较麻烦了,平台对应的socket方法又得重写一遍。

如果采用bridge方法,我先定义implemtor,例如listen,send,receive方法,然后实现winImpl,linuxImpl。

那么不论netserver还是netclient就好办了,直接搞个implementor,至少win,linux相关的代码都放到implentor去了。这可能是2个库喔。

你可能感兴趣的:(Adapter)