工厂模式

原创 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,而不是去修改代码。就可以啦~~~可怜



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

【设计模式】简单工厂模式与工厂方法模式详细解读

1.前言     设计模式,各具特色,今天在此总结一下常见模式中 简单工厂模式与工厂方法模式的区别与联系 2.两种模式概要    1. 简单工厂模式         对于简单工厂模式的介绍,请...
  • yudandan10
  • yudandan10
  • 2013年03月10日 15:09
  • 4703

工厂模式及在项目中的应用

工厂模式分为简单工厂、工厂方法模式和抽象工厂模式。简单工厂顾名思义是最简单的,从一个工厂获取所需的产品类似于factory.getProduct1();或factory.getProduct2(),最...
  • empyan
  • empyan
  • 2017年02月06日 21:20
  • 2175

Android 工厂模式,三种工厂模式的理解

工厂模式是一种创建者模式,在任何生成复杂对象的地方都可以使用工厂模式。理论来说在任何使用A a = new A()的方式都可以使用工厂模式,虽然使用工厂模式可能需要多做一些工作,但是在后续的开发和维护...
  • zhi184816
  • zhi184816
  • 2016年05月08日 23:36
  • 8918

简单工厂模式

  • 2018年01月13日 14:44
  • 9KB
  • 下载

C语言工厂模式

  • 2014年08月05日 13:17
  • 477KB
  • 下载

工厂模式简介和实例代码

  • 2016年11月17日 17:58
  • 3.87MB
  • 下载

简单工厂模式

  • 2017年08月16日 20:07
  • 60.84MB
  • 下载

iOS三种工厂模式详解(demo + 图 +分析)

  • 2017年08月17日 18:00
  • 348KB
  • 下载

工厂模式测试

  • 2017年02月21日 17:01
  • 12KB
  • 下载

抽象工厂模式

  • 2016年08月12日 06:56
  • 18KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:工厂模式
举报原因:
原因补充:

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