2019-02-27——设计模式 桥接模式
2019-02-27 本文已影响1人
烟雨乱平生
特点
如果说某个系统能够从多个角度来进行分类,且每一种分类都可能会变化,那么我们需要做的就是将这多个角度分离出来,使得他们能独立变化,减少他们之间的耦合,这个分离过程就使用了桥接模式,将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现的,从而降低了抽象和实现这两个可变维度的耦合度。
主要角色
- 抽象化(Abstraction)角色:定义抽象类,并包含一个对实现化对象的引用。
- 扩展抽象化(Refined Abstraction)角色:是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。
- 实现化(Implementor)角色:定义实现化角色的接口,供扩展抽象化角色调用。
- 具体实现化(Concrete Implementor)角色:给出实现化角色接口的具体实现
实现
public interface IAge {
int getAge();
}
public class ConcreteAge implements IAge{
@Override
public int getAge() {
return 20;
}
}
public abstract class AbstractGender {
protected IAge impl;
AbstractGender(IAge impl){
this.impl = impl;
}
abstract String getGender();
}
public class RefinedGender extends AbstractGender{
public RefinedGender(IAge impl) {
super(impl);
}
@Override
String getGender() {
return "male";
}
public void createPerson(){
System.out.println(String.format("{\"person\":{\"gender\":\"%s\",\"age\":\"%s\"}}",getGender(),this.impl.getAge()));
}
}
桥接模式感觉使用的是正交思想