macoo

记录收获的点点滴滴

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一、简单工厂模式简介(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、实例运行结果

五、总结(Summary

简单工厂模式是比较简单的一种设计模式,本文对此模式的概念及其设计结构图简单地进行了描述,最后以一个计算器的实例进行了说明。

 

 

版权

作者:灵动生活

出处:http://www.cnblogs.com/ywqu

如果你认为此文章有用,请点击底端的【推荐】让其他人也了解此文章

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

posted on 2010-03-17 15:49  macoo  阅读(106)  评论(0)    收藏  举报