设计模式系列–模板模式

设计模式系列--模板模式

定义

模板模式通常又叫模板方法模式,是指定义一个算法的骨架,并允许子类为一个或者多个步骤提供实现。

模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤。

实现方式

现在要设计一个购物优选系统,在系统内你可以随意选择商品,在结算时再选择货源如淘宝、京东、当当、拼多多等购物平台。

DoShopping 接口

public interface DoShopping {
	void doShopping();
}

DoShoppingOnlineTemplate 模板类

public abstract  class DoShoppingOnlineTemplate  {

	/**
	 * 支付模板
	 */
	protected void pay() {
		//确认购物车
		checkShoppingCart();
		//确认收货地址
		checkDeliveryAddress();
		//选择货物来源,由子类实现
		payType();
		//结束购物
		successShopping();
	}

	final void checkDeliveryAddress(){
		System.out.println("确认收货地址");
	};

	final void checkShoppingCart(){
		System.out.println("开始结算购物车");
	}

	protected void payType() {}

	final void successShopping() {
		System.out.println("订单已完成");
	}
}

DangDangShopping 平台

public class DangDangShopping extends DoShoppingOnlineTemplate implements DoShopping {

	[@Override](https://my.oschina.net/u/1162528)
	public void doShopping() {
		super.pay();
	}

	[@Override](https://my.oschina.net/u/1162528)
	protected void payType() {
		System.out.println("你已选用当当购物");
	}
}

JingDongShopping 平台

public class JingDongShopping extends DoShoppingOnlineTemplate implements DoShopping {

	[@Override](https://my.oschina.net/u/1162528)
	public void doShopping() {
		super.pay();
	}

	[@Override](https://my.oschina.net/u/1162528)
	protected void payType() {
		System.out.println("你已选用京东购物");
	}
}

PinDuoDuoShopping 平台

public class PinDuoDuoShopping extends DoShoppingOnlineTemplate implements DoShopping {

	[@Override](https://my.oschina.net/u/1162528)
	public void doShopping() {
		super.pay();
	}

	@Override
	protected void payType() {
		System.out.println("你已选用拼多多购物");
	}

}

TaoBaoShopping 平台

public class TaoBaoShopping extends DoShoppingOnlineTemplate implements DoShopping {

	@Override
	public void doShopping() {
		super.pay();
	}

	@Override
	protected void payType() {
		System.out.println("你已选用淘宝购物");
	}

编写测试类

public class Test {
	public static void main(String[] args) {
		ShoppingOnlineFactory shoppingOnlineFactory = new ShoppingOnlineFactory();
		shoppingOnlineFactory.getShoppingLine(ShoppingOnlineFactory.DANGDANG).doShopping();
		shoppingOnlineFactory.getShoppingLine(ShoppingOnlineFactory.TAOBAO).doShopping();
	}
}

hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 设计模式系列–模板模式