设计模式---1:DOTNet设计模式实例之简单工厂模式(Simple Factory Pattern)

1.简单工厂主要解决的问题是:

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

2.简单工厂的模式结构:

  

IProduct接口:抽象产品类

ConcreteProduct:产品类的具体实现

Simple Factory简单工厂类

 

3.实例分析:

      其中:

       Operation:抽象操作类

                   AddOperation:加法操作---|产品类的具体实现

                   SubOperation:减法操作---|产品类的具体实现

     SimpleFactory:简单工厂类。

 

代码
 /// <summary>
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.简单工厂类
/// <summary>
        
/// 简单工厂类
        
/// </summary>
        
/// <param name="operation"></param>
        
/// <returns></returns>
        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 op1 
= SimpleFactory.CreateOperation("+");
            op1.numberA 
= 10;
            op1.numberB 
= 20;
            Console.WriteLine(
"{0}+{1}={2}", op1.numberA, op1.numberB, op1.GetResult());

            Operation op2 
= SimpleFactory.CreateOperation("-");
            op2.numberA 
= 10;
            op2.numberB 
= 20;
            Console.WriteLine(
"{0}-{1}={2}", op2.numberA, op2.numberB, op2.GetResult());

            Console.Read();
        }

 

 

4.运行效果

 

 

5、总结(Summary

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

 

posted @ 2010-07-28 15:19  Jasmines  阅读(277)  评论(2编辑  收藏  举报