浅析设计模式之策略模式
好了,既然解决方案提出来了,我们就来实现它吧 。
首先我们定义所有的报到步骤的接口:
public interface I教务处报到下面我实现两个教务处报到的步骤,其他的就当作课后作业了,呵呵。
{
void 教务处报到();
}
public interface I缴费
{
void 缴费();
}
public interface I本院系报到
{
void 本院系报到();
}
public interface I教材科发教材
{
void 教材科发教材();
}
public class 教务处报到A : I教务处报到再看看我们的高校类的实现吧:
{
public void 教务处报到()
{
Console.Write("教务处报到,A类实现");
}
}
public class 教务处报到B : I教务处报到
{
public void 教务处报到()
{
MessageBox.Show("教务处报到,B类实现");
}
}
public class 高校
{
public 高校(I教务处报到 p教务处报到,I缴费 p缴费,I本院系报到 p本院系报到,I教材科发教材 p教材科发教材)
{
this._教务处报到 = p教务处报到;
this._缴费 = p缴费;
this._本院系报到 = p本院系报到;
this._教材科发教材 = p教材科发教材;
}
//为什么有了赋值的构造函数还要暴露这么多只写属性出来呢?
//这样就可以在运行时改变高校的报到步骤了,
//假如报到系统出现故障我们可以马上采取另外一种方案
//而不需要停止系统的运行
I教务处报到 _教务处报到;
public I教务处报到 教务处报到
{
set
{
_教务处报到 = value;
}
}
I缴费 _缴费;
public I缴费 缴费
{
set
{
_缴费 = value;
}
}
I本院系报到 _本院系报到;
public I本院系报到 本院系报到
{
set
{
_本院系报到 = value;
}
}
I教材科发教材 _教材科发教材;
public I教材科发教材 教材科发教材
{
set
{
_教材科发教材 = value;
}
}
//用上了策略模式,模板方法更加灵活了
//但现在还是不是模板方法了?
public void 报到()
{
教务处报到.教务处报到();
缴费.缴费();
本院系报到.本院系报到();
教材科发教材.教材科发教材();
}
}
0
相关文章