抽象工厂模式(Abstract Factory Method Pattern)

来源:互联网 发布:淘宝化妆品过敏退货 编辑:程序博客网 时间:2024/06/05 17:04

图示原理

原理图


【注释】客户与抽象工厂与抽象产品直接相关,其中用抽象工厂生产抽象产品,用实体工厂生产实体产品,用抽象产品提供实体产品访问接口,用实体产品实现自己的功能。


各类解释

抽象工厂角色:担任这个角色的是工厂方法模式的核心,是工厂的父类。通常使用接口或抽象类实现。
具体工厂角色:这个角色直接在客户端的调用下创建产品的实例。这个角色含有选择合适的产品对象的逻辑,而这个逻辑是与应用系统的商业逻辑紧密相关的。通常使用具体的类实现。
抽象产品角色:担任这个角色的类是创建的对象的父类,或它们共同拥有的接口。通常使用接口或抽象类实现这一角色。
具体产品角色:抽象工厂模式所创建的任何产品对象都是某一具体产品类的实例。这是客户端最终需要的东西。通常使用具体类实现这个角色。


范例

namespace ConsoleApplicationDemo{    public interface IApparel    {        string ShowMe();    }    public abstract class AppFactory    {        public abstract IApparel CreateApparel();    }    public class SportShirt : IApparel    {        public string ShowMe()        {            return ("Sports Shirt");        }    }    public class DressShirt : IApparel    {        public string ShowMe()        {            return ("Dress Shirt");        }    }    public class SportShirtFactory : AppFactory    {        public override IApparel CreateApparel()        {            return new SportShirt();        }    }    public class DressShirtFactory : AppFactory    {        public override IApparel CreateApparel()        {            return new DressShirt();        }    }    class Program    {        public static IApparel CollectApparel(AppFactory factory)        {            return factory.CreateApparel();        }        static void Main(string[] args)        {            AppFactory factory = new DressShirtFactory();            IApparel obj = CollectApparel(factory);            string shirtType = obj.ShowMe();            Console.WriteLine(shirtType);        }    }}



效果图

运行结果

1 0
原创粉丝点击