设计模式之桥接模式
2016-03-22 19:28
429 查看
桥接模式是将抽象部分与实现部分分离,使它们都可以独立的变化。
——《设计模式》GOF
就是不关心两个对象是如何生成的,只关心二者是行为是可以随意组合。
比如,男人穿牛仔裤,女人穿裙子,在桥接模式里面,就可以随意的让男人穿裙子,女人穿牛仔裤。
衣服接口:
public abstract class Clothes {
public abstract void wearClothes();
}裙子:
public class Skirt extends Clothes {
@Override
public void wearClothes() {
System.out.println("裙子");
}
}牛仔裤:
public class Jean extends Clothes {
@Override
public void wearClothes() {
System.out.print("牛仔裤");
}
}people抽象类:
public abstract class People {
public Clothes clothes;
public void setClothes(Clothes clothes) {
this.clothes = clothes;
}
public abstract void wearClothes();
}男人:
public class Man extends People {
@Override
public void wearClothes() {
System.out.print("男人穿");
this.clothes.wearClothes();
}
}女人:
public class Women extends People {
@Override
public void wearClothes() {
System.out.print("女人穿");
this.clothes.wearClothes();
}
}男人女人开始穿衣服:
public class Main {
public static void main(String[] args) {
// 天气热,让男人穿裙子
People man = new Man();
man.setClothes(new Skirt());
man.wearClothes();
// 天气冷,让女人穿牛仔裤
People women = new Women();
women.setClothes(new Jean());
women.wearClothes();
}
} 桥接模式跟抽象工厂模式正好相反,桥接模式里面的对象行为可以随意组合,而抽象工厂模式的产品角色和行为角色则一起组成一个流水线,正好避免了张冠李戴。
——《设计模式》GOF
就是不关心两个对象是如何生成的,只关心二者是行为是可以随意组合。
比如,男人穿牛仔裤,女人穿裙子,在桥接模式里面,就可以随意的让男人穿裙子,女人穿牛仔裤。
衣服接口:
public abstract class Clothes {
public abstract void wearClothes();
}裙子:
public class Skirt extends Clothes {
@Override
public void wearClothes() {
System.out.println("裙子");
}
}牛仔裤:
public class Jean extends Clothes {
@Override
public void wearClothes() {
System.out.print("牛仔裤");
}
}people抽象类:
public abstract class People {
public Clothes clothes;
public void setClothes(Clothes clothes) {
this.clothes = clothes;
}
public abstract void wearClothes();
}男人:
public class Man extends People {
@Override
public void wearClothes() {
System.out.print("男人穿");
this.clothes.wearClothes();
}
}女人:
public class Women extends People {
@Override
public void wearClothes() {
System.out.print("女人穿");
this.clothes.wearClothes();
}
}男人女人开始穿衣服:
public class Main {
public static void main(String[] args) {
// 天气热,让男人穿裙子
People man = new Man();
man.setClothes(new Skirt());
man.wearClothes();
// 天气冷,让女人穿牛仔裤
People women = new Women();
women.setClothes(new Jean());
women.wearClothes();
}
} 桥接模式跟抽象工厂模式正好相反,桥接模式里面的对象行为可以随意组合,而抽象工厂模式的产品角色和行为角色则一起组成一个流水线,正好避免了张冠李戴。
相关文章推荐
- PropertyChangeListener简单理解
- 什么是设计模式
- 设计模式之创建型模式 - 特别的变量问题
- 七、设计模式——装饰模式
- 设计模式总结
- 设计模式之创建型模式
- 浅谈设计模式的学习
- Ruby设计模式编程之适配器模式实战攻略
- 实例讲解Ruby使用设计模式中的装饰器模式的方法
- 设计模式中的模板方法模式在Ruby中的应用实例两则
- Ruby设计模式编程中对外观模式的应用实例分析
- 实例解析Ruby设计模式编程中Strategy策略模式的使用
- Ruby中使用设计模式中的简单工厂模式和工厂方法模式
- Ruby使用设计模式中的代理模式与装饰模式的代码实例
- 详解组合模式的结构及其在Ruby设计模式编程中的运用
- C#编程中使用设计模式中的原型模式的实例讲解
- 使用设计模式中的工厂方法模式进行C#编程的示例讲解
- 实例解析C#设计模式编程中简单工厂模式的使用
- 详解C#设计模式编程中生成器模式的使用
- 深入解析C#设计模式编程中对建造者模式的运用