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

Net设计模式实例之简单工厂模式(Simple Factory Pattern)

程序员文章站 2022-06-07 20:36:40
一、简单工厂模式简介(bref introduction) 简单工厂模式(simple factory pattern)的优点是,工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类...

一、简单工厂模式简介(bref introduction)

简单工厂模式(simple factory pattern)的优点是,工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖

二、解决的问题(what to solve)

客户实例化对象时不需要关心该对象是由哪个子类实例化的。

三、简单工厂模式分析(analysis)

1、简单工厂模式结构

Net设计模式实例之简单工厂模式(Simple Factory Pattern)

iproduct接口:抽象产品类

concreteproduct类:产品类的具体实现

simple factory简单工厂类

四.实例分析(example)

1、场景

一个简单计算器,具有简单的加操作和减操作。结构如下图所示

Net设计模式实例之简单工厂模式(Simple Factory Pattern)

simplefactory:简单工厂类。

operation:抽象操作类

addoperation:加法操作

suboperation:减法操作

2、代码

1、抽象操作类operation,及其具体实现类addoperation、suboperation

/// <summary>
/// 抽象操作类
/// </summary>
public abstract class operation

{

    public int numbera;

    public int numberb;

    public abstract int getresult();

}

/// <summary>
/// 加法操作
/// </summary>
public class addoperation: operation

{

    public override int getresult()

    {

        return (this.numbera + this.numberb);

    }

}

/// <summary>
/// 减法操作
/// </summary>
public class suboperation: operation

{

    public override int getresult()

    {

        return (this.numbera - this.numberb);

    }

}

2、简单工厂类simplefactory

/// <summary>
/// 简单工厂类
/// </summary>
public class simplefactory

{

    public static operation createoperation(string operation)

    {

        operation o = null;

        switch (operation)

        {

        case "+":

            o = new addoperation();

            break;

        case "-":

            o = new suboperation();

            break;

        }

        return o;

    }

}

3、客户端代码

static void main(string[] args)

{

    operation operation1 = simplefactory.createoperation("+");

    operation1.numbera = 10;

    operation1.numberb = 20;

    console.writeline("{0}+{1}={2}", operation1.numbera, operation1.numberb, operation1.getresult());

    operation operation2 = simplefactory.createoperation("-");

    operation2.numbera = 10;

    operation2.numberb = 20;

    console.writeline("{0}-{1}={2}", operation2.numbera, operation2.numberb, operation2.getresult());

    console.read();

}

3、实例运行结果

Net设计模式实例之简单工厂模式(Simple Factory Pattern)