C# 模板方法(TempleteMethod)
理解:当父类中有一个复杂主方法,主方法中大部分不变,只有小部分随子类变化时,把变化点提取出来成新的抽象子方法,让不同的子类去实现不同的子方法。这样主方法不变的部分就可以达到代码复用功能。
代码:
using System.Windows.Forms;
namespace DesignMode.TempleteMethod
{
//抽象父类
public abstract class FatherClass
{
//人生计划
public void LifePlan()
{
MessageBox.Show("上中兴小学");
MessageBox.Show("上中兴中学");
University();
MessageBox.Show("继承家业");
}
//让儿子去决定大学
public abstract void University();
}
//子类一
public class OneSon : FatherClass
{
public override void University()
{
MessageBox.Show("上北京大学");
}
}
//子类二
public class TwoSon : FatherClass
{
public override void University()
{
MessageBox.Show("上清华大学");
}
}
//子类三
public class ThreeSon : FatherClass
{
public override void University()
{
MessageBox.Show("国外留学");
}
}
}
namespace DesignMode.TempleteMethod
{
//抽象父类
public abstract class FatherClass
{
//人生计划
public void LifePlan()
{
MessageBox.Show("上中兴小学");
MessageBox.Show("上中兴中学");
University();
MessageBox.Show("继承家业");
}
//让儿子去决定大学
public abstract void University();
}
//子类一
public class OneSon : FatherClass
{
public override void University()
{
MessageBox.Show("上北京大学");
}
}
//子类二
public class TwoSon : FatherClass
{
public override void University()
{
MessageBox.Show("上清华大学");
}
}
//子类三
public class ThreeSon : FatherClass
{
public override void University()
{
MessageBox.Show("国外留学");
}
}
}
客户端代码:
private void btn_TempleteMethod_Click(object sender, EventArgs e)
{
FatherClass oneSon = new OneSon();
oneSon.LifePlan();
FatherClass twoSon = new TwoSon();
twoSon.LifePlan();
FatherClass threeSon = new ThreeSon();
threeSon.LifePlan();
}
{
FatherClass oneSon = new OneSon();
oneSon.LifePlan();
FatherClass twoSon = new TwoSon();
twoSon.LifePlan();
FatherClass threeSon = new ThreeSon();
threeSon.LifePlan();
}