技术开发 频道

浅析设计模式之策略模式


【IT168 专稿】

模板方法的延续

    这篇稿子是基于我的前一篇模板方法设计模式之上演绎的,如果没有阅读请点击这里查看,以了解这篇稿子的上下文。
在模板方法设计模式里我举了一个例子:教育部规定了新生报到流程的算法骨架,然后这个算法骨架中的一些关键步骤由各高校自由的去发挥。我在这个例子中将高校设为一个抽象类,各高校要实现的算法步骤都是抽象方法。我还给出了两个高校的实现代码:清华大学和北京大学。在这个例子中本没有什么问题,但是软件总是会变的。

    当有更多的高校要实现的时候,我们就会发现,很多高校的有些报到步骤实现是一样的,这就存在子类中有大量的重复代码,重复总是会出问题的。当然我们可以使用Martin Fowler的Pull Up Method(Refactoring P320)重构方法,将这些共同的部分推移到高校这个父类实现,并将这个抽象类改为virtual。


public abstract class 高校 
{
public void 报到()
{
教务处报到();
缴费();
本院系报到();
教材科发教材();
}
protected abstract void 教务处报到();
//方法由抽象的更改为虚方法
protected virtual void 缴费()
{
//将这个方法在父类去实现,因为好多高校的实现都是这样的,避免重复
}
protected abstract 专业等信息 本院系报到();
protected abstract 教材 教材科发教材();
}
0
相关文章