简单例子
抽象模板
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部,生产的顺序是固定的,但是每一步可能不同,或者其中某些步骤可以共用,这样具有相同结构的业务或者产品可以使用模板方法。
4万+

被折叠的 条评论
为什么被折叠?



