概念:将抽象部分和实现部分分离,使它们都可以独立的变化,是一种结构性模式。
举例:人都要穿衣服,人分为男人和女人,衣服有衬衫,裤子,裙子等多种,我们要代码模拟人穿衣服,若不使用桥接模式,
必须告诉是男人还是女人,是哪种衣服。
使用桥接模式,只需要定义一个抽象类人,和衣服接口,抽象类有穿衣服方法,衣服接口有衣服类型,人首先要得到衣服。
这样,人和衣服都可以独立的变化,即实现了桥接模式。
代码:
package com.tc.gof.bridge;
/**
* 抽象类 人
*
*/
public abstract class Person {
// 衣服
private Clothing clothing;
// 类型 男人或女人
private String type;
public Person(Clothing clothing, String type){
this.clothing = clothing;
this.type = type;
}
/**
* 穿衣服
*/
public void clothing(){
System.out.print(type);
clothing.dressClothing();
}
}
package com.tc.gof.bridge;
/**
*
* 男人
*/
public class Man extends Person {
public Man(Clothing clothing) {
super(clothing,"男人");
}
}
package com.tc.gof.bridge;
/**
* 衣服接口
*
*/
public interface Clothing {
// 穿衣服
public void dressClothing();
}
package com.tc.gof.bridge;
/**
* 衬衫
*
*/
public class Shirt implements Clothing {
public void dressClothing() {
System.out.println("穿上衬衫");
}
}
package com.tc.gof.bridge;
/**
* 裙子
*
*/
public class Skirt implements Clothing {
public void dressClothing() {
System.out.println("穿上裙子");
}
}
测试代码:
package com.tc.gof.bridge;
public class BridgeTest {
public static void main(String[] args) {
Clothing clothing = new Shirt();
Person man = new Man(clothing);
man.clothing();
}
}
输出:男人穿上衬衫
个人只是简单举个例子,http://www.oschina.net/question/1435262_140274?fromerr=psE1Hq6U,这里有详细解释