抽象工厂模式(Abstract Factory)

来源:互联网 发布:mastercam编程教程 编辑:程序博客网 时间:2024/06/05 03:12

           工厂三姐妹中的最后升级是抽象工厂模式,现在我们来说说抽象工厂。

定义:

          提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。

          

代码结构图:

          现在我们假设这里有电脑的cpu和Ram,其中电脑的类别中分为Pc和Mac,则抽象中的结构图如下:   

  在这幅图中,逻辑是很明显的。                          

   

              

代码部分:

           根据上面的关系,我们可以得到下面的具体的代码

 interface Cpu    {        public Cpu()        {        }    }    interface Ram    {        public Ram()        {        }    }    //四个具体产品    public class PcCpu : Cpu    {    }    public class MacCpu : Cpu    {    }    public class PcRam : Ram    {    }    public class MacRam : Ram    {    }    //抽象工厂角色    public interface ComputerFactory    {        Cpu createCpu();        Ram createRam();    }    //两个具体工厂角色    public class PcProducer : ComputerFactory    {        public Cpu createCpu()        {            return new PcCpu();        }        public Ram createRam()        {            return new PcRam();        }    }    public class MacProducer : ComputerFactory    {        public Cpu createCpu()        {            return new MacCpu();        }        public Ram createRam()        {            return new MacRam();        }    }}
      

           工厂是一个产品的封装,而抽象工厂是对一系列相关产品的封装,俩者都是将实体对象和动作解耦,更有利于我们的以后的维护和修改。

          

反射技术:

        在抽象工厂中引入了反射的概念,反射也就是把代码中的具体的固定的常量变成了变量。具体的格式是Assembly.load("程序集名称").CreateInstance("命名空间.类名称"),用字符串来实例化对象,变量是可以随时更新的,更加的灵活。


        工厂在一步一步的升级,我们的学习也在逐步的深入。。。。。


0 0
原创粉丝点击