zoukankan      html  css  js  c++  java
  • 简单工厂模式实例

    1.最近在学习设计模式,学习最简单的简单工厂设计模式。

      1.1  工厂模式用到了单一职责原则和开闭原则

      1.2  单一原则:一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。

      1.3  开闭原则:一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。(注:抽象化是开闭原则的关键)

    2.工厂模式核心就是抽象

    其他的不说了,直接上代码

    3.先建一个抽象类和一个抽象方法

    public abstract class AbstractChart
        {
            //virtual 虚方法必须实现方法体
            public abstract void Display();
        }

    4.建一个饼状图的类,继承抽象类,用override重写抽象类里面的方法,实现多态

    public class PieChart:AbstractChart
        {
            public override void Display()
            {
                Console.WriteLine("这是一个饼状图!");
            }
        }

    5.建一个柱状图的类,继承抽象类,用override重写抽象类里面的方法,实现多态

    public class BarChart:AbstractChart
        {
            //子类继承抽象类用override重写抽象类的方法(父类方法必须是抽象方法或者虚方法)
            public override void Display()
            {
                Console.WriteLine("这是一个柱状图!");
            }
        }

    6.创建一个工厂类,根据条件创建出对应的对象,调用方法

    public class SimpleFactory
        {
            AbstractChart chart;
            public AbstractChart CreateFactory(string oper)
            {
                switch (oper)
                {
                    case "bar":
                        chart = new BarChart();
                        break;
                    case "pie":
                        chart = new PieChart();
                        break;
                }
                return chart;
            }
        }

    7.根据工厂创建出对象,根据传递的信息,得到相对应的值

    static void Main(string[] args)
            {
                //工厂模式用到了单一职责原则和开闭原则
                //单一原则:一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。
                //开闭原则:一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。(注:抽象化是开闭原则的关键)
                SimpleFactory simpleFactory = new SimpleFactory();
                AbstractChart chart = simpleFactory.CreateFactory("bar");
                chart.Display();
            }
    将来的你,一定会感谢现在努力的自己!
  • 相关阅读:
    hdu5834 Magic boy Bi Luo with his excited tree 【树形dp】
    POJ2152 Fire 【树形dp】
    POJ1848 Tree 【树形dp】
    hdu3586 Information Disturbing 【树形dp】
    BZOJ4557 [JLoi2016]侦察守卫 【树形dp】
    BZOJ4000 [TJOI2015]棋盘 【状压dp + 矩阵优化】
    BZOJ1487 [HNOI2009]无归岛 【仙人掌dp】
    BZOJ4002 [JLOI2015]有意义的字符串 【数学 + 矩乘】
    洛谷P3832 [NOI2017]蚯蚓排队 【链表 + 字符串hash】
    3-3 银行业务队列简单模拟
  • 原文地址:https://www.cnblogs.com/GreatPerson/p/8244854.html
Copyright © 2011-2022 走看看