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

本文介绍简单工厂模式的概念、结构及应用实例。通过一个计算器的例子详细解释了如何使用简单工厂模式来减少客户端代码对具体产品的依赖。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

  

IProduct接口:抽象产品类

ConcreteProduct:产品类的具体实现

Simple Factory简单工厂类

 

3.实例分析:

      其中:

       Operation:抽象操作类

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

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

     SimpleFactory:简单工厂类。

 

ExpandedBlockStart.gif代码
 /// <summary>
ExpandedBlockStart.gif1、抽象操作类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);
        }
    }

 

    

 

 

ExpandedBlockStart.gif2.简单工厂类
/// <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;
        }

 

 

ExpandedBlockStart.gif3.客户端代码
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

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

 

转载于:https://www.cnblogs.com/taofengli288/archive/2010/07/28/1787063.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值