zoukankan      html  css  js  c++  java
  • 模板方法模式

      模板方法模式:


    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 }

    运行结果:

    用户登录
    购买回力_足球鞋一双!!!
    使用现金支付
    
    用户登录
    购买阿迪达斯_秋裤一条!
    使用银联卡支付

  • 相关阅读:
    python内置模块argparse的使用
    pyqt5中通过pycharm配置designer(win和mac都适用,修改下designer目录路径即可)
    初始pyqt5
    pyqt5学习示例
    python中partial用法
    python中操作csv
    python模块imghdr-----推测图像类型
    portainer docker可视化工具
    靠着这份面试手册成功斩获99家BAT大厂offer
    redis事物有一致性吗?
  • 原文地址:https://www.cnblogs.com/penguin1024/p/11809644.html
Copyright © 2011-2022 走看看