桥接模式
继承所带来的子类与父类的强依赖关系限制了复用性和程序的灵活性。
需要尽量使用合成/聚合,尽量不要使用类继承。
聚合表示一种弱“拥有”关系,比如对象A可以包含对象B,但对象B不一定是对象A的一部分。
合成表示一种强“拥有”关系,是严格的部分和整体的关系。
合成最明显的特点是部分和整体具有相同的生命周期。
合成聚合复用原则的好处是有助于保持每个类都被封装,并被集中在单一任务上。类与类继承的层次可以保持比较小的规模。
GOF对于桥接模式的定义是:“将抽象部分与它的实现部分分离,使他们都可以独立地发生变化。”
抽象与实现分离:
抽象类与它的派生类用来实现自己的对象。桥接模式适用于有多重分类且每种分类都需要独立变化的情况。
public abstract class math
{
public abstract void select();
}
public class mathanalysis extends math
{
@override
public void select()
{
"shufen"
}
}
public class advancemath extends math
{
@override
public void select()
{
"gaoshu"
}
}
public abstract class departments
{
protected math mathcourse;
public void setcourse(math m)
{
mathcourse = m;
}
public abstract void select();
}
public class computer extends departments
{
@override
public void select()
{
"计算机系开始选课了"
((math)mathcourse).select();
}
}
public class mathematics extends departments
{
@override
public void select()
{
"数学系开始选课了"
((math)mathcourse).select();
}
}