1.特点:使继承关系更改为组合关系,使两者可独立变化。(未雨绸缪)
2.概念:将抽象部分与它的实现部分分离,使它们都可以独立地变化。
3.类图:
4.程序实现:
abstract class Implementor
{
public abstract void Operation();
}
class ConcreteImplementorA :Implementor
{
public override void Operation()
{
Console.WriteLine("具体实现A的方法执行");
}
}
class ConcreteImplementorB :Implementor
{
public override void Operation()
{
Console.WriteLine("具体实现B的方法执行");
}
}
abstract class Abstraction
{
protected Implementor implementor;
public void SetImplementor(Implementor implementor)
{
this.implementor = implementor;
}
public virtual void Operation()
{
implementor.Operation();
}
}
class RefinedAbstraction :Abstraction
{
public override void Operation()
{
implementor.Operation();
}
}
class Program
{
static void Main(string[] args)
{
Abstraction ab = new RefinedAbstraction();
ab.SetImplementor(new ConcreteImplementorA ());
ab.Operation();
ab.SetImplementor(new ConcreteImplementorB ());
ab.Operation();
Console.Read();
}
}