.Net设计模式实例之工厂方法模式(转载)

1、抽象操作类Operation,及其具体实现类AddOperation、SubOperation
  /// 
  /// 抽象操作类
  /// 
  public abstract class Operation
  {
  public int numberA;
  public int numberB;
  public abstract int GetResult();
  }
  /// 
  /// 加法操作
  /// 
  public class AddOperation : Operation
  {
  public override int GetResult()
  {
  return (this.numberA + this.numberB);
  }
  }
  /// 
  /// 减法操作
  /// 
  public class SubOperation : Operation
  {
  public override int GetResult()
  {
  return (this.numberA - this.numberB);
  }
  }

  


2、抽象工厂类Factory及其具体工厂类AddFactory、SubFactory
  public abstract class Factory
  {
  public abstract Operation CreateOperation();
  }
  public class AddFactory : Factory
  {
  public override Operation CreateOperation()
  {
  return new AddOperation();
  }
  }
  public class SubFactory:Factory
  {
  public override Operation CreateOperation()
  {
  return new SubOperation();
  }
  }

  


3、客户端代码
  static void Main(string[] args)
  {
  Console.WriteLine("使用工厂方法进行计算");
  Factory factory1 = new AddFactory();
  Operation operation1= factory1.CreateOperation();
  operation1.numberA = 10;
  operation1.numberB = 20;
  Console.WriteLine("{0}+{1}={2}", operation1.numberA, operation1.numberB, operation1.GetResult());
  Factory factory2 = new SubFactory();
  Operation operation2 = factory2.CreateOperation();
  operation2.numberA = 10;
  operation2.numberB = 20;
  Console.WriteLine("{0}+{1}={2}", operation2.numberA, operation2.numberB, operation2.GetResult());
  Console.Read();
  }

  3、实例运行结果

  

  五、总结(Summary)

  本文对工厂方法模式(Factory Method Pattern)的概念及其设计结构图简单地进行了描述,同样也以一个计算器的实例进行了说明,工厂方法模式较简单工厂模式,修改时关闭的,扩展时开放的,完全符合开放-封闭原则.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个软件设计模式工厂方法抽象工厂组合实例: ```java // 抽象产品接口 interface Product { void show(); } // 具体产品类A class ConcreteProductA implements Product { @Override public void show() { System.out.println("具体产品A展示"); } } // 具体产品类B class ConcreteProductB implements Product { @Override public void show() { System.out.println("具体产品B展示"); } } // 抽象工厂接口 interface Factory { Product createProduct();} // 具体工厂类A class ConcreteFactoryA implements Factory { @Override public Product createProduct() { return new ConcreteProductA(); } } // 具体工厂类B class ConcreteFactoryB implements Factory { @Override public Product createProduct() { return new ConcreteProductB(); } } // 工厂方法与抽象工厂组合使用 public class Client { public static void main(String[] args) { Factory factoryA = new ConcreteFactoryA(); Product productA = factoryA.createProduct(); productA.show(); Factory factoryB = new ConcreteFactoryB(); Product productB = factoryB.createProduct(); productB.show(); } } ``` 在上面的例子中,我们定义了一个抽象产品接口Product和两个具体产品类ConcreteProductA和ConcreteProductB。然后定义了一个抽象工厂接口Factory和两个具体工厂类ConcreteFactoryA和ConcreteFactoryB,每个具体工厂类都可以生产不同的具体产品。最后在Client类中,我们使用工厂方法和抽象工厂组合的方式来创建具体产品对象并调用show()方法展示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值