今天学习的为策略模式,反复看了几遍书中关于策略模式的概念后,始终觉得其与简单工厂模式有很多相似的地方,还不能很清楚的分辨他们的区别。
先用一个实例来了解策略模式。
实例一:旅游出行的方式可以有多种,如乘坐飞机旅游,也 可以乘火车旅游,如果有兴趣自行车游也是一种极具 乐趣的出行方式。不同的旅游出行方式有不同的实现 过程,客户根据自己的需要选择一种合适的旅游方式。 在本实例中我们用策略模式来模拟这一过程。
策略模式中公有如下角色:
Contex:环境类
Strategy:抽象策略类
CcreteStrategy:具体策略类
在本例中环境类为Person类;
抽象策略类为TravelStrategy类;
具体策略类分别有:AirplaneStrategy、TrainStrategy、BiycleStrategy
类图
代码如下
Person.cs
namespace Strategy
{
class Person
{
private TravelStrategy ts;
public void setStrategy(TravelStrategy strategy)