大话设计模式-----简单工厂模式与策略模式
2010-09-02 10:41
337 查看
简单工厂模式:
///
/// 运算类工厂
///
public class OperationFactory
{
public static Operation createOperate(string operate)
{
Operation oper = null;
switch (operate)
{
case "+":
{
oper = new OperationAdd();
break;
}
case "-":
{
oper = new OperationSub();
break;
}
case "*":
{
oper = new OperationMul();
break;
}
case "/":
{
oper = new OperationDiv();
break;
}
case "sqr":
{
oper = new OperationSqr();
break;
}
case "sqrt":
{
oper = new OperationSqrt();
break;
}
case "+/-":
{
oper = new OperationReverse();
break;
}
}
return oper;
}
}
关联关系代码如下:
class Penguin : Bird
{
private Climate climate;
}
聚合关系如下:
class WideGooseAggregate
{
private WideGoose[] arrayWideGoose;
}
合成(组合)关系如下:
class Bird
{
private Wing wing;
public Bird()
{
wing = new Wing();
}
}
依赖关系如下:
abstract class Animal
{
public Metabolism(Oxygen oxygen, Water water)
{
}
}
策略模式:定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户。
策略模式的一般代码如下:
using System;
using System.Collections.Generic;
using System.Text;
namespace 策略模式
{
class Program
{
static void Main(string[] args)
{
Context context;
context = new Context(new ConcreteStrategyA());
context.ContextInterface();
context = new Context(new ConcreteStrategyB());
context.ContextInterface();
context = new Context(new ConcreteStrategyC());
context.ContextInterface();
Console.Read();
}
}
//抽象算法类
abstract class Strategy
{
//算法方法
public abstract void AlgorithmInterface();
}
//具体算法A
class ConcreteStrategyA : Strategy
{
//算法A实现方法
public override void AlgorithmInterface()
{
Console.WriteLine("算法A实现");
}
}
//具体算法B
class ConcreteStrategyB : Strategy
{
//算法B实现方法
public override void AlgorithmInterface()
{
Console.WriteLine("算法B实现");
}
}
//具体算法C
class ConcreteStrategyC : Strategy
{
//算法C实现方法
public override void AlgorithmInterface()
{
Console.WriteLine("算法C实现");
}
}
//上下文
class Context
{
Strategy strategy;
public Context(Strategy strategy)
{
this.strategy = strategy;
}
//上下文接口
public void ContextInterface()
{
strategy.AlgorithmInterface();
}
}
}
///
/// 运算类工厂
///
public class OperationFactory
{
public static Operation createOperate(string operate)
{
Operation oper = null;
switch (operate)
{
case "+":
{
oper = new OperationAdd();
break;
}
case "-":
{
oper = new OperationSub();
break;
}
case "*":
{
oper = new OperationMul();
break;
}
case "/":
{
oper = new OperationDiv();
break;
}
case "sqr":
{
oper = new OperationSqr();
break;
}
case "sqrt":
{
oper = new OperationSqrt();
break;
}
case "+/-":
{
oper = new OperationReverse();
break;
}
}
return oper;
}
}
关联关系代码如下:
class Penguin : Bird
{
private Climate climate;
}
聚合关系如下:
class WideGooseAggregate
{
private WideGoose[] arrayWideGoose;
}
合成(组合)关系如下:
class Bird
{
private Wing wing;
public Bird()
{
wing = new Wing();
}
}
依赖关系如下:
abstract class Animal
{
public Metabolism(Oxygen oxygen, Water water)
{
}
}
策略模式:定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户。
策略模式的一般代码如下:
using System;
using System.Collections.Generic;
using System.Text;
namespace 策略模式
{
class Program
{
static void Main(string[] args)
{
Context context;
context = new Context(new ConcreteStrategyA());
context.ContextInterface();
context = new Context(new ConcreteStrategyB());
context.ContextInterface();
context = new Context(new ConcreteStrategyC());
context.ContextInterface();
Console.Read();
}
}
//抽象算法类
abstract class Strategy
{
//算法方法
public abstract void AlgorithmInterface();
}
//具体算法A
class ConcreteStrategyA : Strategy
{
//算法A实现方法
public override void AlgorithmInterface()
{
Console.WriteLine("算法A实现");
}
}
//具体算法B
class ConcreteStrategyB : Strategy
{
//算法B实现方法
public override void AlgorithmInterface()
{
Console.WriteLine("算法B实现");
}
}
//具体算法C
class ConcreteStrategyC : Strategy
{
//算法C实现方法
public override void AlgorithmInterface()
{
Console.WriteLine("算法C实现");
}
}
//上下文
class Context
{
Strategy strategy;
public Context(Strategy strategy)
{
this.strategy = strategy;
}
//上下文接口
public void ContextInterface()
{
strategy.AlgorithmInterface();
}
}
}
相关文章推荐
- 大话设计模式1 简单工厂模式 策略模式
- 大话设计模式中简单工厂模式和策略模式的商场收银软件实例的C++代码
- 大话设计模式之策略模式(结合简单工厂),程序完善过程蕴含智慧
- 大话设计模式-策略模式与简单工厂模式
- 大话设计模式-策略模式与简单工厂模式
- 简单的工厂模式(参考于大话设计模式)
- 23种设计模式之简单工厂——大话设计模式
- 简单工厂 和 策略模式的区别
- 设计模式学习笔记一 简单工厂策略模式实现销售策略的变更(一)
- 大话设计模式-简单工厂模式
- 《大话设计模式》读书笔记-第1章 简单工厂模式
- 简单工厂模式和策略模式理解
- 简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别
- 大话设计模式:第一章简单工厂模式
- 大话设计模式:第一章简单工厂模式
- 策略模式与简单工厂的C++实现
- 商场促销-策略模式(和简单工厂模式很像的哇) C#
- 简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别
- 大话设计模式中简单工厂模式的计算器实例的C++代码
- 简单工厂模式和策略模式的区别