设计模式-模板方法思考

设计模式-模板方法思考

简单例子

抽象模板

package mode.template;

/**
 * @author gang.tu
 */
public abstract class AbstractTemplateComputer {
    public abstract void makeBoard();

    public abstract void makeCPU();

    public abstract void makeMonitor();

    final void makePower() {
        System.out.println("生成公用电池");
    }

    final void createComputer() {
        makeBoard();
        makeCPU();
        makePower();
        makeMonitor();
        System.out.println("生产完成");
    }
}

分别实现两个产品

package mode.template;

/**
 * @author gang.tu
 */
public class IBMComputer extends AbstractTemplateComputer {

    @Override
    public void makeBoard() {
        System.out.println("ibm 主板");
    }

    @Override
    public void makeCPU() {
        System.out.println("ibm cpu");
    }

    @Override
    public void makeMonitor() {
        System.out.println("ibm 显示器");
    }
}
package mode.template;

/**
 * @author gang.tu
 */
public class MicrosoftComputer extends AbstractTemplateComputer {

    @Override
    public void makeBoard() {
        System.out.println("Microsoft 主板");
    }

    @Override
    public void makeCPU() {
        System.out.println("Microsoft cpu");
    }

    @Override
    public void makeMonitor() {
        System.out.println("Microsoft 显示器");
    }
}

单元测试

package mode.template;


import org.junit.Test;

public class AbstractTemplateComputerTest {

    @Test
    public void t() {
        IBMComputer ibmComputer = new IBMComputer();
        MicrosoftComputer microsoftComputer = new MicrosoftComputer();
        ibmComputer.createComputer();
        microsoftComputer.createComputer();
    }
}

运行结果

ibm cpu
生成公用电池
ibm 显示器
生产完成
Microsoft 主板
Microsoft cpu
生成公用电池
Microsoft 显示器
生产完成

以上结果可以看出各个产品完成了自己需要实现的业务流程,同时生产流水线是父类已经定义好的,并且使用final修饰,防止修改。

总结

这个模板里面是用来生产电脑,假设生产所有的电脑都需要4部,生产的顺序是固定的,但是每一步可能不同,或者其中某些步骤可以共用,这样具有相同结构的业务或者产品可以使用模板方法。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值