模板方法模式:
1. 购物 (抽象类)
1 package com.monkey1024.service; 2 3 public abstract class Shopping { 4 5 // 模板方法 6 public void buyGoods() { 7 userLogin(); 8 buy(); 9 pay(); 10 } 11 12 // 子类不能重写的方法 13 public final void userLogin() { 14 System.out.println("用户登录"); 15 } 16 17 // 子类必须实现 18 public abstract void buy(); 19 20 // 钩子方法 21 public void pay() { 22 System.out.println("使用银联卡支付"); 23 } 24 } 25 26
2. 买衣服
1 package com.monkey1024.service; 2 3 // 购买衣服 4 public class ClothesShopping extends Shopping { 5 6 @Override 7 public void buy() { 8 System.out.println("购买阿迪达斯_秋裤一条!"); 9 } 10 11 }
3.买鞋
package com.monkey1024.service; // 买鞋子 public class ShoesShopping extends Shopping { @Override public void buy() { System.out.println("购买回力_足球鞋一双!!!"); } @Override public void pay() { System.out.println("使用现金支付"); } }
4. 测试类
1 package com.monkey1024.test; 2 3 import com.monkey1024.service.ClothesShopping; 4 import com.monkey1024.service.ShoesShopping; 5 import com.monkey1024.service.Shopping; 6 7 public class MyTest { 8 9 public static void main(String[] args) { 10 11 // 买鞋 12 Shopping shoesShopping= new ShoesShopping(); 13 shoesShopping.buyGoods(); 14 15 System.out.println(); 16 // 买衣服 17 Shopping clothesShopping= new ClothesShopping(); 18 clothesShopping.buyGoods(); 19 20 21 } 22 }
运行结果:
用户登录 购买回力_足球鞋一双!!! 使用现金支付 用户登录 购买阿迪达斯_秋裤一条! 使用银联卡支付