桥接模式

设计模式的意义在于:面向业务内容、业务数据结构和系统架构,高内聚低耦合、优雅的将平面逻辑立体化。

 1 package designPattern;
 2 /**
 3  * 桥接模式
 4  * @author Administrator
 5  */
 6 public class A6_BridgeTest {
 7 
 8     /**
 9      * 将抽象部分与他的实现部分分离,使他们都可以独立的变化
10      * 适用性:
11      * 1,你不希望在抽象和他的实现之间有一个搞定的绑定关系.
12      * 2,类的抽象以及他的实现都应该可以通过生成子类的方法加以补充
13      * 这时Bridge模式使你可以对不同的抽象接口和实现部分进行组合,并分别对他们进行补充
14      * 3,对一个抽象的实现部分的修改,应对客户不产生影响,即客户的代码不必重新编译
15      * 4,这样需要生成许多类,因为要讲对象分成2个部分
16      * 5,你想在多个对象间共享实现(可能使用引用计数),但同时要求客户并不知道这一点
17      */
18     public static void main(String[] args) {
19         PersonBridge man=new ManBridge();
20         PersonBridge woman=new WomanBridge();
21         
22         Clothing manClothing=new Jacket();
23         Clothing womanClothing=new Trouser();
24         
25         manClothing.personDressCloth(man);
26         womanClothing.personDressCloth(woman);
27         
28         manClothing.personDressCloth(woman);
29         womanClothing.personDressCloth(man);
30     }
31 }
32 
33 //1,abstract 定义抽象类的接口,维护一个指向Implementor类型对象的指针
34 abstract class PersonBridge
35 {
36     private Clothing clothing;
37     private String type;
38     
39     public Clothing getClothing() {
40         return clothing;
41     }
42     public void setClothing(Clothing clothing) {
43         this.clothing = clothing;
44     }
45     public String getType() {
46         return type;
47     }
48     public void setType(String type) {
49         this.type = type;
50     }
51     public abstract void dress();
52 }
53 //2,refinedAbstract 扩充由abstract定义的接口
54 class ManBridge extends PersonBridge
55 {
56     public ManBridge()
57     {
58         setType("男人");
59     }
60     public void dress() {
61         Clothing clothing=getClothing();
62         clothing.personDressCloth(this);
63     }
64 }
65 class WomanBridge extends PersonBridge
66 {
67     public WomanBridge()
68     {
69         setType("女人");
70     }
71     public void dress() {
72         Clothing clothing=getClothing();
73         clothing.personDressCloth(this);
74     }    
75 }
76 //3,Impementor 定义实现类的操作,该接口不一定要与abstract接口完全一致,甚至完全可以不同
77 //一般来说Impementor接口仅提供基本操作,而abstract则定义了基于这些基本操作的较高层次的操作
78 abstract class Clothing
79 {
80     public abstract void personDressCloth(PersonBridge p);
81 }
82 //ConcreteImplementor 实现Implementor接口
83 class Jacket extends Clothing
84 {
85     public void personDressCloth(PersonBridge p) {
86         System.out.println(p.getType()+"穿马甲...");
87     }    
88 }
89 class Trouser extends Clothing
90 {
91     public void personDressCloth(PersonBridge p) {
92         System.out.println(p.getType()+"穿裙子...");
93     }    
94 }

 

环境:JDK1.6,MAVEN,tomcat,eclipse

源码地址:https://files.cnblogs.com/files/xiluhua/designPattern.rar

欢迎亲们评论指教。

posted @ 2015-04-10 09:52  xiluhua  阅读(181)  评论(0编辑  收藏  举报