设计方式之Bridge模式
设计模式之Bridge模式?????? 这几天闲着没事,看一下Bridge模式。它是实现对象与行为分离的。做一下小例子与
设计模式之Bridge模式
?????? 这几天闲着没事,看一下Bridge模式。它是实现对象与行为分离的。做一下小例子与大家分享:
,希望能与大家交流。
现定义一个对数据对象操作的接口:
java 代码
- package?org.mvc.webtier; ????
- public?interface?Operator?{ ???String?work(String?arg); ??
- } ????
实现上边的这个接口: java 代码
- package?org.mvc.webtier; ????
- public?class?Insert?implements?Operator{ ????
- ?public?String?work(String?arg)?{ ????//?TODO?Auto-generated?method?stub ??
- ?? ????return?"insert?"+arg; ??
- ?} ????
- }package?org.mvc.webtier; ????
- public?class?Update?implements?Operator?{ ???public?String?work(String?arg)?{ ??
- ??//?TODO?Auto-generated?method?stub ????
- ??return?"update?"?+?arg; ???} ??
- } ????
定义数据对象的抽象类:
java 代码
- package?org.mvc.webtier; ????
- public?abstract?class?Table?{ ???protected?Operator?impl?=?null; ??
- ???public?abstract?void?work(); ??
- ???public?Operator?getImpl()?{ ??
- ??return?impl; ???} ??
- ???public?void?setImpl(Operator?impl)?{ ??
- ??this.impl?=?impl; ???} ??
- } ????
具体的数据对象继承上面的这个抽象类:
?
java 代码
- package?org.mvc.webtier; ????
- public?class?Table1?extends?Table{ ????
- ?@Override???public?void?work()?{ ??
- ??//?TODO?Auto-generated?method?stub ????System.out.println(this.impl.work("Table1")); ??
- ?} ????
- } ????
- package?org.mvc.webtier; ????
- public?class?Table2?extends?Table{ ????
- ?@Override???public?void?work()?{ ??
- ??//?TODO?Auto-generated?method?stub ????System.out.println(this.impl.work("Table2")); ??
- ?} ????
- } ????
根据具体的业务就可以对具体的数据对象进行操作了。
java 代码
- Table?tbl1?=?new?Table1(); ????tbl1.setImpl(new?Insert()); ??
- ??tbl1.work(); ????tbl1.setImpl(new?Update()); ??
- ??tbl1.work(); ???? ??
- ??Table?tbl2?=?new?Table2(); ??
- ??tbl2.setImpl(new?Update()); ????tbl2.work(); ??
- ??tbl2.setImpl(new?Insert()); ????tbl2.work(); ??
- ??
?
1 楼 piaochunzhi 2007-11-14 感觉 和 策略 相似呢,这些模式好晕