抽象工厂模式

现在我需要不同尺寸的螺丝和螺帽了,那么久有必要对实现方法做更改了

假设这个工厂是按照尺寸来划分车间的,我们需要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();
        }
    }

 

posted @ 2019-03-27 09:05  秋水!  阅读(148)  评论(0编辑  收藏  举报