java中23种设计模式之7-模板方法模式(template method pattern)

本文深入探讨了模板方法模式的概念及其应用,通过生产手机的例子,展示了如何在抽象类中定义部分逻辑,并让子类实现剩余逻辑。文章提供了具体代码实现,清晰地展示了不同子类如何通过重写抽象方法来实现不同功能。

 定义:模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。

 

以生产手机为例,有一个6寸屏幕手机的模型,其他的手机可以用此模型做衍生品。

在这里,6寸屏幕(screenSize)是固定的,不用重写。而手机制式(systemType)和手机颜色(colorType)可以改变,定义为抽象方法,需要重写。

 

abstract class PhoneModel6Inch
{
public void printPhoneInfo()
{
screenSize();
systemType();
colorType();
}
protected final void screenSize()
{
System.out.print("6 inch,");
}
abstract protected void systemType();
abstract void colorType();

}
class Phone1 extends PhoneModel6Inch
{
public void systemType()
{
System.out.print("2G,");
}
public void colorType()
{
System.out.println("Black");
}
}

class Phone2 extends PhoneModel6Inch
{
public void systemType()
{
System.out.print("3G,");
}
public void colorType()
{
System.out.println("Red");
}
}

public class TemplateMethodPattern
{
public static void main(String[] args)
{
System.out.print("number 1 phone is: ");
Phone1 aPhone1=new Phone1();
aPhone1.printPhoneInfo();
System.out.print("number 2 phone is: ");
Phone2 aPhone2=new Phone2();
aPhone2.printPhoneInfo();
}
}

/////////////////////////////////////////////////

输出结果:

number 1 phone is: 6 inch,2G,Black
number 2 phone is: 6 inch,3G,Red

 

转载于:https://www.cnblogs.com/wudymand/p/4379001.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值