模板方法模式
GOF对于模板方法模式的定义是:“定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。”
TempleateMethod使得子类可以不改变的一个算法的结构即可重新定义该算法的某些特定步骤。
上代码,以手机为例。
package TemplateMethod;public abstract class MobilePhone { protected abstract String Users(); public void PowerOn() { System.out.println(Users() + "的手机开机了。"); } public void PowerOff() { System.out.println(Users() + "的手机关机了。"); } public void DialUp() { System.out.println(Users() + "的手机正在拨打电话。"); } public void About() { System.out.println("我是" + Users() + "的手机。"); } }
package TemplateMethod;public class MobilePhoneA extends MobilePhone{ @Override protected String Users() { // TODO Auto-generated method stub return "程序员"; } }
package TemplateMethod;public class MobilePhoneB extends MobilePhone{ @Override protected String Users() { // TODO Auto-generated method stub return "程序媛"; } }
package TemplateMethod;public class client { private static void test(MobilePhone phone) { System.out.println("测试手机"); phone.PowerOn(); phone.DialUp(); phone.About(); phone.PowerOff(); } public static void main(String[] args) { // TODO Auto-generated method stub test(new MobilePhoneA()); test(new MobilePhoneB()); } }
运行结果:
1.PNG
模板方式很好地实现了代码的复用平台。
一般在如下情况使用模板方式:
一次性地实现一个算法不变的部分,而将可变的行为留给子类实现。
当子类中有公共的行为可以提取到公共的父类中去,并且子类有自己的个性化要求时。
一般子类要扩展的地方是固定的。
作者:球球球球笨
链接:https://www.jianshu.com/p/37e9d1b98fbd
點擊查看更多內(nèi)容
為 TA 點贊
評論
評論
共同學習,寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦