抽象工厂模式
现在我需要不同尺寸的螺丝和螺帽了,那么久有必要对实现方法做更改了
假设这个工厂是按照尺寸来划分车间的,我们需要1mm和5毫米的螺丝,这样就可以具体到车间,告诉这个工厂的车间,来给我生产
这样,工厂部分代码就是这样的
public abstract class Factory { public abstract Screw CreateScrew(); public abstract Nut CreateNut(); } public class Factory1MM : Factory { public override Nut CreateNut() { return new Nut1MM(); } public override Screw CreateScrew() { return new Screw1MM(); } } public class Factory5MM : Factory { public override Nut CreateNut() { return new Nut5MM(); } public override Screw CreateScrew() { return new Screw5MM(); } }
产品是这样的
public abstract class Screw { public abstract void PrintScrew(); } public abstract class Nut { public abstract void PrintNut(); } public class Screw1MM : Screw { public override void PrintScrew() { Console.WriteLine("1毫米螺丝"); } } public class Screw5MM : Screw { public override void PrintScrew() { Console.WriteLine("5毫米螺丝"); } } public class Nut1MM : Nut { public override void PrintNut() { Console.WriteLine("1毫米螺帽"); } } public class Nut5MM : Nut { public override void PrintNut() { Console.WriteLine("5毫米螺帽"); } }
这样,就可以在客户端创建想要的产品了
class Program { static void Main(string[] args) { Factory factory1MM = new Factory1MM(); factory1MM.CreateNut().PrintNut(); factory1MM.CreateScrew().PrintScrew(); Console.ReadKey(); } }