界说一个操纵中算法的框架,而将一些法式延迟到子类中。使得子类可以不转变一个算法的布局即可重界说该算法的某些特定法式。
启示组装电脑一般包罗三个部分,,主机、显示器、输入设备(键鼠),而差别品牌电脑的组装都各不不异,但是最终组装成一部完整的电脑的法式都是固定一样的。界说抽象类,袒露主机、显示器、输入设备(键鼠)的组装给具体厂商去实现,供给一个大众的最终组装要领。
/// <summary> /// 组装电脑 /// </summary> public abstract class AssembleComputer { /// <summary> /// 组装主机 /// </summary> public abstract void BuildMainFramePart(); /// <summary> /// 组装显示器 /// </summary> public abstract void BuildScreenPart(); /// <summary> /// 组装输入设备(键鼠) /// </summary> public abstract void BuildInputPart(); /// <summary> /// 组装起来 /// </summary> public void Assemble() { BuildMainFramePart(); BuildScreenPart(); BuildInputPart(); } } /// <summary> /// 组装HP电脑 /// </summary> public class AssembleHpComputer : AssembleComputer { public override void BuildMainFramePart() { Console.WriteLine("组装HP电脑的主板"); } public override void BuildScreenPart() { Console.WriteLine("组装HP电脑的显示器"); } public override void BuildInputPart() { Console.WriteLine("组装HP电脑的键盘鼠标"); } } /// <summary> /// 组装DELL电脑 /// </summary> public class AssembleDellComputer : AssembleComputer { public override void BuildMainFramePart() { Console.WriteLine("组装Dell电脑的主板"); } public override void BuildScreenPart() { Console.WriteLine("组装Dell电脑的显示器"); } public override void BuildInputPart() { Console.WriteLine("组装Dell电脑的键盘鼠标"); } }
优错误谬误
实现了代码复用,切合【OCP】
模板要领模式在抽象类中界说了算法的实现法式,将这些法式的实现延迟到具体子类中去实现,从而使所有子类复用了父类的代码,所以模板要领模式是基于担任的一种实现代码复用的技术。
当创建庞大东西的算法应该独立于该东西的构成部分以及它们的装配方法时。
当结构过程必需允许被结构的东西有差此外暗示时。