之前就了解到继承复用有一定的缺点:比如如果基类发生了改变,那么派生类的的实现就不得不发生改变;而且从超类继承而来的实现是静态的,不可能在运行时发生改变,因此它的灵活性差并最终会限制复用性。
现在学习了合成/聚合复用原则就解决了继承复用的缺点。
下面是合成/聚合复用原则的思维导图:
桥接模式的结构图
桥接模式的结构图的基本代码
//Implementor类
abstract class Implementor
{
public abstract void Operation();
} //concreteImplementorA和concreteImplementorB等派生类
class concreteImplementorA : Implementor
{
public override void Operation()
{
Console.WriteLine("具体实现A的方法执行。");
}
}
class concreteImplementorB : Implementor
{
public override void Operation()
{
Console.WriteLine("具体实现B的方法执行。");
}
} //Abstaction类
class Abstraction
{
protected Implementor implementor;
public void SetImplementor(Implementor implementor)
{
this.implementor = implementor;
}
public virtual void Operation()
{
implementor.Operation();
}
}
//refinedabstraction类
class Refinedabstraction : Abstraction
{
public override void Operation()
{
implementor.Operation();
}
} static void Main(string[] args)
{
//客户端实现
Abstraction ab = new Refinedabstraction();
ab.SetImplementor(new concreteImplementorA());
ab.Operation();
ab.SetImplementor(new concreteImplementorB());
ab.Operation();
Console.Read();
} 桥接模式的是说将抽象部分与实现部分分离,其实可以理解实现系统有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让它们独立变化,减少它们之间的耦合。
只要深入的理解设计原则,很多设计模式其实就是原则的应用。
本文详细介绍了合成/聚合复用原则如何解决继承复用的缺点,通过桥接模式的结构图和基本代码解释了实现原理。深入理解设计原则后,发现许多设计模式实际上是对这些原则的应用。
2781

被折叠的 条评论
为什么被折叠?



