当前位置: 移动技术网 > IT编程>开发语言>.net > Net设计模式实例之简单工厂模式(Simple Factory Pattern)

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

2018年09月16日  | 移动技术网IT编程  | 我要评论

非诚勿扰11号女嘉宾,天字一号下载,nc6400拆机

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

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

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

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

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

1、简单工厂模式结构

iproduct接口:抽象产品类

concreteproduct类:产品类的具体实现

simple factory简单工厂类

四.实例分析(example)

1、场景

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

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、实例运行结果

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网