• 极速理解设计模式系列:21.简单工厂模式(Simple Factory Pattern)


    四个角色:抽象产品(Product)、具体产品(Concrete Product)、工厂(Creator)、客户端(Client) 

            抽象产品(Product):需要创建的各种产品的父类。这类产品有共同的接口。

            具体产品(Concrete Product):需要创建的具体对象。

            工厂(Creator):内部逻辑可以控制生成目标对象。

            客户端(Client):实例化工厂,然后工厂根据传入参数得到各种产品。调用产品实现不同功能。

     实现思路:首先将工厂实例化,然后使用工厂创建产品赋值给抽象产品的引用,然后通过抽象产品的公共接口调用具体产品的方法以实现功能。

    类图: 

    应用场景:苹果公司的工厂生产iphone 4、ipad 2、ipod nano 6。

    分析:这里多种产品都可以运行,所以有一个公共方法,然后抽象为父类。

            下面我们在控制台程序去演示一下如何使用Simple Factory Pattern:

            一、抽象产品(Product):

        //抽象产品(Product)
    abstract class Apple
    {
    public abstract void Run();
    }

            二、具体产品(Concrete Product):

        //具体产品(Concrete Product)
    class Iphone : Apple
    {
    public override void Run()
    {
    Console.WriteLine("iphone 4 开始运行!");
    }
    }

    //具体产品(Concrete Product)
    class Ipad : Apple
    {
    public override void Run()
    {
    Console.WriteLine("ipad 2 开始运行!");
    }
    }

    //具体产品(Concrete Product)
    class IpodNano : Apple
    {
    public override void Run()
    {
    Console.WriteLine("ipod Nano 6 开始运行!");
    }
    }

            三、工厂(Creator):

        //工厂(Creator)
    class AppleFactory
    {
    public Apple CreateApple(string productName)
    {
    switch (productName.ToUpper())
    {
    case "IPHONE":
    return new Iphone();
    case "IPAD":
    return new Ipad();
    case "IPODNANO":
    return new IpodNano();
    default:
    return null;
    }
    }
    }

            四、客户端(Client):

        //客户端(Client)
    class Program
    {
    static void Main(string[] args)
    {
    AppleFactory factory = new AppleFactory();
    Apple iphone= factory.CreateApple("iphone");
    iphone.Run();
    Apple ipad = factory.CreateApple("ipad");
    ipad.Run();
    Apple ipodnano = factory.CreateApple("ipodnano");
    ipodnano.Run();
    Console.ReadLine();
    }
    }

           如需源码请点击 SimpleFactoryPattern.rar 下载。

  • 相关阅读:
    ubuntu下开发环境的搭建
    用移动存储设备安装Ubuntu全攻略
    LAMP服务器搭建
    PHP关闭提示、打印配置
    PHPmyadmin修改root密码
    转 sql2oracle
    SQL Server链接其他数据库服务器的方法(转)
    转(哈希查找)
    日语网址
    Reflector 右键注册
  • 原文地址:https://www.cnblogs.com/chengxingliang/p/2283466.html
Copyright © 2020-2023  润新知