什么是模板设计模式?
在父类中定义好算法的骨架,然后在子类中去实现。
总的来说就是父类中定义需要实现的总方法,然后在子类中去依次实现它
当然根据对象的不同,所实现的具体细节不同。
下面来看一个例子:
在父类中我们定义三个抽象的方法job ,在子类中去实现它。
子类中执行execute方法 job1()如果当前时间能整除2 则执行job2()
然后顺序执行job3().
package 模板方法一;
public abstract class Job {
protected abstract boolean job1();
protected abstract void job2();
protected abstract void job3();
public void execute()
{
if(this.job1())//如果job1执行 则一定执行job2
{
this.job2();//this当前指向的对象jobimp1
}
this.job3();
}
}
package 模板方法一;
public class JobImp extends Job{
public static void main(String []args)
{
JobImp j=new JobImp();
j.execute();
}
protected boolean job1() {
return System.currentTimeMillis()%2==0;
}
@Override
protected void job2() {
System.out.println("大胸,你好");
}
@Override
protected void job3() {
System.out.println("hello wordl");
}
}
模板模式的优点
(1)具体细节步骤实现定义在子类中,子类定义详细处理算法是不会改变算法整体结构。
(2)代码复用的基本技术,在数据库设计中尤为重要。
(3)存在一种反向的控制结构,通过一个父类调用其子类的操作,通过子类对父类进行扩展增加新的行为,符合“开闭原则”。
模板模式的不足
(1).每一个实现都要new一个子类,导致类的个数增加,系统庞大。
模板设计模式与接口的区别?
模板设计模式可以更好的限制子类,又让子类去实现。