工厂模式

原创 2015年11月18日 15:29:14

关于简单工厂,

今天稍微写一下。

举个简单的例子。

假设我们需要根据命令,输出 “Hello ClassA”或者 “Hello ClassB”


一般我们这么做~

根据用户输入来选择,或者根据类型来选择,(用if/else 或者 switch随便你,但这不是本文的重点!大哭

string str=Console.ReadLine();
            if (str == "ClassA")
            {
                Console.WriteLine("Hello ClassA");
            }
            else if (str == "ClassB")
            {
                Console.WriteLine("Hello ClassB");
            }
            else
            { 
                
            }

如果代码需要更改,增加一个 ClassC,那么我们不得不继续增加一个 else if


由于以上问题,我们终于衍生出了工厂模式

首先我们创建一个  抽象的基类~哈哈微笑

写一个抽象方法。就是用来打印文字。

public abstract class BaseClass
        {
            public abstract void WriteStr();
        }


好啦,然后我们分别创建 ClassA 和 ClassB 

让他们继承BaseClass基类,并且实现了当中的

 WriteStr()方法,哈哈

public class ClassA : BaseClass
        {
            public override void WriteStr()
            {
                Console.WriteLine("Hello ClassA");
            }
        }

        public class ClassB : BaseClass
        {
            public override void WriteStr()
            {
                Console.WriteLine("Hello ClassB");
            }
        }


然后我们局可以调用了

BaseClass b = new ClassA();
            BaseClass b1 = new ClassB();

            b.WriteStr();       //输出:Hello ClassA
            b1.WriteStr();      //输出:Hello ClassB

是不是很简单?根据子类引用,获得不同的对象。然后输出对应的字符串~


但是!!!但是,兄弟们啊,既然都做到这一步了。那我们在稍微多做一步啊。。。虽然上面看似差不多了。

但也只是差不多而已。。。

说白了,工厂模式,就是为了减少维护工作,是class对外禁止修改,扯一大堆。。。。我觉得就是减少代码量。好维护。。。就这样。

继续继续。

我们在上面的代码中,继续写下:

这里就是根据传入的T,创建不同的ClassA或者 ClassB

public class Class2
        {
            public virtual T CreateClass<T>() where T : BaseClass, new()
            {
                T obj = new T();
                return obj;
            }
        }

调用代码:

public static void Main(string[] args)
        {
            BaseClass b = new Class2().CreateClass<ClassB>();
            b.WriteStr();

            Console.ReadLine();

            

        }


好啦,就这么完成了,其实很简单。

宗旨就是,我们将多个有关联的同种类Class继承自一个基类:BaseClass。

然后实现他们共有的方法,

最后通过ClassCreate来创建实例对象。

这样,在以后如果还存在 ClassC的时候,我们只需要增加一个新的Class,而不是去修改代码。就可以啦~~~可怜



版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

简单工厂模式 工厂模式 抽象工厂模式

这次C++设计模式的简单工厂模式 工厂模式 抽象工厂模式写了一下 我感觉还是简单易懂的,

简单工厂模式、工厂模式、抽象工厂模式

简单工厂: 到底要实例化谁,将来是否会增加实例化的对象,这是很容易变化的地方,应该考虑使用一个单独的类来做这个创造实例的过程,就是工厂。   如果基于上述代码,需要增加一个求M的N次方的操作,那...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

工厂模式(简单工厂模式、工厂方法模式)

设计模式学习笔记一,工厂模式在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。二,介绍意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工...

工厂模式(简单工厂模式+工厂方法模式)

在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一...

简单工厂模式,工厂模式,抽象工厂模式

今天在看电子书时,突然忘记了工厂模式的几种形式,不用也忘得快,尽快复习下喽。。。 工厂模式有三种,简单工厂模式,工厂模式,抽象工厂模式 1.简单工厂模式: 简单将产品的制造进行封装,不分类别只是简...

简单工厂模式、工厂模式、抽象工厂模式

一、简单工厂模式 突然有一天,在梦里拥有了阿拉丁神灯. 灯神说: "我可以给你创造一个女朋友哦" 这时候我的心里...嘿嘿嘿... "但是只能满...

工厂模式-工厂方法模式

工厂模式就是负责将大量有共同接口的类实例,而不必事先知道要实例化哪一个类的模式。工厂模式一般分为三种:简单工厂模式、工厂方法模式、抽象工厂模式。从模式性质来说,工厂模式属于创建型模式。 工厂方法...

工厂模式---抽象工厂模式

抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体的类。抽象工厂运行客户使用抽象的接口来创建一组相关的产品,而不需要知道或关心实际产出的具体产品是什么,这样客户就从具体的产品...

工厂模式-简单工厂模式

工厂模式就是负责将大量有共同接口的类实例,而不必事先知道要实例化哪一个类的模式。工厂模式一般分为三种:简单工厂模式、工厂方法模式、抽象工厂模式。从模式性质来说,工厂模式属于创建型模式。 简单工厂...

工厂模式&抽象工厂模式

工厂模式 工厂模式总的来说就是使用工厂方法来代替new创建对象。主要用来封装对象创建过程的复杂性。 可分为三类: 1)简单工厂模式(Simple Factory)  2)工厂方法模式(Factory ...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)