前言
代码
public interface IBridge
{
void Create();
}
public class StoneBridge : IBridge
{
public void Create()
{
Console.WriteLine("The bridge is made of stone.");
}
}
public class SteelBridge : IBridge
{
public void Create()
{
Console.WriteLine("The bridge is made of steel.");
}
}
public abstract class BridgeType
{
protected IBridge bridge;
protected BridgeType(IBridge bridge)
{
this.bridge = bridge;
}
public abstract void Create();
}
public class ArchBridge : BridgeType
{
public ArchBridge(IBridge bridge) : base(bridge){}
public override void Create()
{
Console.WriteLine("Creating an arch bridge. ");
bridge.Create();
}
}
public class RigidFrameBridge : BridgeType
{
public RigidFrameBridge(IBridge bridge) : base(bridge){}
public override void Create()
{
Console.WriteLine("Created a steel bridge.");
bridge.Create();
}
}
internal class Program
{
static void Main(string[] args)
{
IBridge stone = new StoneBridge();
IBridge steel = new SteelBridge();
BridgeType archBridge = new ArchBridge(stone);
BridgeType rigidFrameBride = new RigidFrameBridge(steel);
archBridge.Create();
rigidFrameBride.Create();
Console.ReadLine();
}
}
运行结果
