模板模式

来源:互联网 发布:网络文件管理系统 编辑:程序博客网 时间:2024/05/18 01:37

模板方法模式:模板方法模式准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。先制定一个顶级逻辑框架,而将逻辑的细节留给具体的子类去实现开闭原则是指一个软件实体应该对扩展开放,对修改关闭也就是说软件实体必须是在不被修改的情况下被扩展。模板方法模式意图是由抽象父类控制顶级逻辑,并把基本操作的实现推迟到子类去实现,这是通过继承的手段来达到对象的复用,同时也遵守了开闭原则



package TemplateDemo;/*** 这是一个抽象的模板类* */abstract class AbstractClass {     //定义一个模板方法来控制生产手机的流程    public void makeMobile(){//TemplateMethod       //首先生产手机体(模板方法自己完成)       System.out.println("生产了一个手机body");       this.makeDifferentFunction();       this.makeDifferentColor();       this.makeDifferentType();       System.out.println("一部手机制作完成");       //以上模板已经规定好了    }    //定义抽象的方法来完成不同的生产细节(不同功能的手机)    protected abstract void makeDifferentFunction();    //定义抽象的方法来完成不同的生产细节(不同颜色的手机)    protected abstract void makeDifferentColor();    //定义抽象的方法来完成不同的生产细节(不同类型的手机)    protected abstract void makeDifferentType();}/*** 创建真是的实现类来实现具体的生产细节* */class ConcreteClass extends AbstractClass{    //实现父类中的抽象的方法    protected void makeDifferentColor() {       System.out.println("给该手机的颜色涂成蓝色");    }    protected void makeDifferentFunction() {       System.out.println("给该手机实现看MP4的功能");    }    protected void makeDifferentType() {        System.out.println("给该手机制作成翻盖的");       }}//写测试类public class TestTemplate{    public static void main(String args[]){       AbstractClass ac = new ConcreteClass();//子类的对象付给父类       ac.makeMobile();//制作手机       //制作不同的手机只是修改子类就可以了    }}

0 0