场景和定义:当我们要完成的某个细节或者过程或者步骤,但个别操作可能不同时候,我们可以考虑模板方法。
优点:去除子类重复代码,也可以定义让使用者完成定义的流程。如果使用者没有定义,我们可以考虑虚方法,父类定义默认的 某个步骤的执行
UML图
在WPF中,大量使用了模板模式,比如控件开发,那么多继承与封装
例如如下:
很多通用的属性都是封装上一层,比如ListBox上层是Selector而不是ItemControls
Selector上层是ItemControls。
Ok,模拟个简单的模板模式。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace StrategyMo.moban { public abstract class AyWPFControlTemplate { public abstract void SetBackground(); public abstract void SetWidth(); public void RenderTemplate() { SetBackground(); SetWidth(); Console.WriteLine("完成呈现了"); } } public class Control1 : AyWPFControlTemplate { public override void SetBackground() { Console.WriteLine("已经设置红色"); } public override void SetWidth() { Console.WriteLine("宽度100"); } } public class Control2 : AyWPFControlTemplate { public override void SetBackground() { Console.WriteLine("已经设置绿色"); } public override void SetWidth() { Console.WriteLine("宽度200"); } } }
客户端:====================www.ayjs.net 杨洋 wpfui.com ayui ay aaronyang=======请不要转载谢谢了。=========
AyWPFControlTemplate ct1 = new Control1(); ct1.RenderTemplate(); AyWPFControlTemplate ct2 = new Control2(); ct2.RenderTemplate();
效果如下: