• 简单工厂模式


    简单工厂模式

    创建型模式

    关注对象的创建过程 对类的实例化过程进行抽象 对象的创建与使用分离

    简单工厂模式

    定义一个工厂类,根据参数的不同返回不同类的实例

    简单工厂模式结构图

    «interface»
    Product
    "抽象产品"
    ConcreteProductA
    "具体产品角色A"
    ConcreteProductB
    "具体产品角色B"
    Factory
    "工厂角色"
    +FactoryMethod(string args)

    工厂角色:负责创建所有产品实例 可被外界直接调用
    抽象产品:是所创建对象的父类 封装了公共方法
    具体产品角色:创建目标,继承抽象产品,实现抽象方法

    实现示例:
    Product类

        abstract class Product
        {
            public void MethodSame()
            {
                Console.WriteLine("The same Method");
            }
            public abstract void MethodDiff();
    
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    ConcreteProductA类

        class ConcreteProductA : Product
        {
            public override void MethodDiff()
            {
                Console.WriteLine("MethodDiff A");
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    ConcreteProductB类

        class ConcreteProductB : Product
        {
            public override void MethodDiff()
            {
                Console.WriteLine("MethodDiff B");
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    Factory类

        class Factory
        {
            public static Product GetProduct(string arg)
            {
                Product product = null;
                if (arg.Equals("A"))
                    product = new ConcreteProductA();
                else if (arg.Equals("B"))
                    product = new ConcreteProductB();
    
                return product;
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    main函数调用

                //读取配置文件
                string productType = ConfigurationManager.AppSettings["productType"];
                Product product = Factory.GetProduct(productType);
                product.MethodSame();
                product.MethodDiff();
    
    • 1
    • 2
    • 3
    • 4
    • 5

    App.config内容

    
    <configuration>
    	<appSettings>
    		<add key="productType" value="B"/>
    	appSettings>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    示例二:图表库结构图

    «interface»
    Chart
    +Display()
    LineChart
    +LineChart()
    +Display()
    HistogramChart
    +HistogramChart()
    +Display()
    PieChart
    +PieChart()
    +Display()
    ChartFactory
    +GetChart(string type)
  • 相关阅读:
    决策树可视化-graphviz安装
    Linux 文件锁的原理、实现和应用
    路由器端口转发
    repo 命令
    【vue】this.$nextTick解决this.$refs undefined的问题
    【逗老师的无线电】MMDVM盒子pi-star系统添加4G网卡及修改路由优先级
    【疑难攻关】——文件包含漏洞
    《论文阅读》用提示和复述模拟对话情绪识别的思维过程 IJCAI 2023
    AndroidT(13) -- logger_write 库实现解析(四)
    Oracle-基础类
  • 原文地址:https://blog.csdn.net/baidu_24565387/article/details/126558753