欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

设计模式之-简单工厂设计模式

程序员文章站 2022-06-28 12:11:16
我们来看一下简单工厂设计模式,在这里我就拿控制台应用做演示了,来做一个加减乘除的操作,本来是要用窗体的,但因为窗体程序的工具箱怎么也找不到了,很烦 在这个项目中我们共需要 操作类(Operaction),工厂类(factory),加法类(Add),调用(Program),调用就在Program中调用 ......

我们来看一下简单工厂设计模式,在这里我就拿控制台应用做演示了,来做一个加减乘除的操作,本来是要用窗体的,但因为窗体程序的工具箱怎么也找不到了,很烦

在这个项目中我们共需要 操作类(operaction),工厂类(factory),加法类(add),调用(program),调用就在program中调用了。

创建好控制台程序后我们来创建一个操作类(operaction),代码如下

public class operaction
    {
        public int num1 { get; set; }
        public int num2 { get; set; }

        
        public virtual int getresult()
        {
            return 0;
        }

    }

定义了两个int类型的属性一个是 num1和num2,然后又定了一个虚方法,方法就是用来做计算的,因为我们不知道它要执行那个操作想要什么结果,所以我们来定义虚方法,让其他的类去实现方法。

然后我们创建加法类(add),代码如下

public class add:operaction
    {
       
        public override int getresult()
        {
            int result = 0;
            result = num1 + num2;
            return result;
        }
    }

add类继承了operaction,那就拥有了operaction的方法和属性,我们只需要override重写getresult方法即可,然后执行加法操作,至于怎么写代码,就看自己了

然后我们创建工厂类

public static class factory
    {
        public static operaction open(string opac)
        {
            operaction o = null;
            switch (opac)
            {
                case "+":
                    o=new add();
                    break;
                default:
                    break;
            }

            return o;
        }
    }

为了方便调用我们把它改成static静态的类,方法也是静态的方法。注意这里:

public static operaction open(string opac)

我们返回的是一个对象 操作类(operaction),既然要返回operaction,那就要先new一个operaction,但是我们不知道它要进行一个什么操作,所以先new一个空的,参数传过来一个字符串,然后使用switch进行判断,如果是 “+” 就new一个add的类,add类中重写了计算方法(getresult),所以这执行的就是加法计算,因为add这个类已经继承了operaction所以是可以这么做的,里式替换原则,也不多说了。然后我们return返回;工厂类就完成了。

然后就是调用了,在program中调用

        static void main(string[] args)
        {
            operaction op = factory.open("+");
            op.num1 = 5;
            op.num2 = 3;
            console.writeline(op.getresult());
        }

main方法中有看这段代码:

operaction op = factory.open("+");

在调用的时候传入参数 “+” 在工厂模式的switch中就会判断,new一个add(加法类)给你,加法类中又重写了计算的操作,最终结果也就出来了。

同样,减法,乘法,除法也是如此。 工厂模式也可以做很多的事情,在这里只是举了一个小例子而已