读书人

设计方式之Bridge模式

发布时间: 2012-11-07 09:56:10 作者: rapoo

设计模式之Bridge模式

?????? 这几天闲着没事,看一下Bridge模式。它是实现对象行为分离的。做一下小例子与大家分享:设计方式之Bridge模式,希望能与大家交流。

现定义一个对数据对象操作的接口:

java 代码
  1. package?org.mvc.webtier; ????
  2. public?interface?Operator?{ ???String?work(String?arg); ??
  3. } ????
实现上边的这个接口: java 代码
  1. package?org.mvc.webtier; ????
  2. public?class?Insert?implements?Operator{ ????
  3. ?public?String?work(String?arg)?{ ????//?TODO?Auto-generated?method?stub ??
  4. ?? ????return?"insert?"+arg; ??
  5. ?} ????
  6. }package?org.mvc.webtier; ????
  7. public?class?Update?implements?Operator?{ ???public?String?work(String?arg)?{ ??
  8. ??//?TODO?Auto-generated?method?stub ????
  9. ??return?"update?"?+?arg; ???} ??
  10. } ????

定义数据对象的抽象类:

java 代码
  1. package?org.mvc.webtier; ????
  2. public?abstract?class?Table?{ ???protected?Operator?impl?=?null; ??
  3. ???public?abstract?void?work(); ??
  4. ???public?Operator?getImpl()?{ ??
  5. ??return?impl; ???} ??
  6. ???public?void?setImpl(Operator?impl)?{ ??
  7. ??this.impl?=?impl; ???} ??
  8. } ????

具体的数据对象继承上面的这个抽象类:

?

java 代码
  1. package?org.mvc.webtier; ????
  2. public?class?Table1?extends?Table{ ????
  3. ?@Override???public?void?work()?{ ??
  4. ??//?TODO?Auto-generated?method?stub ????System.out.println(this.impl.work("Table1")); ??
  5. ?} ????
  6. } ????
  7. package?org.mvc.webtier; ????
  8. public?class?Table2?extends?Table{ ????
  9. ?@Override???public?void?work()?{ ??
  10. ??//?TODO?Auto-generated?method?stub ????System.out.println(this.impl.work("Table2")); ??
  11. ?} ????
  12. } ????

根据具体的业务就可以对具体的数据对象进行操作了。

java 代码
  1. Table?tbl1?=?new?Table1(); ????tbl1.setImpl(new?Insert()); ??
  2. ??tbl1.work(); ????tbl1.setImpl(new?Update()); ??
  3. ??tbl1.work(); ???? ??
  4. ??Table?tbl2?=?new?Table2(); ??
  5. ??tbl2.setImpl(new?Update()); ????tbl2.work(); ??
  6. ??tbl2.setImpl(new?Insert()); ????tbl2.work(); ??
  7. ??

?

1 楼 piaochunzhi 2007-11-14 感觉 和 策略 相似呢,这些模式好晕

读书人网 >软件开发

热点推荐