zoukankan      html  css  js  c++  java
  • 设计模式-模板设计模式(行为)

    设计模式-模板设计模式(行为)
    模板设计模式:如人到餐厅吃饭分为步骤①:点餐,步骤②:吃饭,步骤③:买单,其中一三步骤大多是相同的,步骤二每个人吃什么东西是不同的。于是就把三步封装一个抽象类,有个所有步骤的行为方法,每个人到餐厅吃饭就继承这个类,实现自己的方法。
     
    public abstract class Eat{
    
        public void doEat(){
            order();
            eating();
            pay();
        }
    
        public void order(){
            //todo 具体实现点餐代码
            System.out.println("具体实现点餐代码");
        }
    
        /**抽象吃饭*/
        public abstract void eating();
    
        public void pay(){
            //todo 具体实现买单代码
            System.out.println("具体实现买单代码");
            if(discount()){
                //todo 实现打折代码( 通过钩子方法来确定某步骤是否执行打折)
                System.out.println("今天有打折哦");
            }
        }
    
        public boolean discount(){
            //默认没有打折,子类可以覆盖这个钩子方法,从而实现买单是否打折
            return false;
        }
    }
    
    
    public class MyEat extends Eat {
        @Override
        public void eating() {
            System.out.println("今天吃鸡肉,味道不错。。。");
        }
    
    //    @Override
    //    public boolean discount() {
    //        return true;
    //    }
    }
    
    
    public class test2 {
        public static void main(String[] args) {
            MyEat eat = new MyEat();
            eat.doEat();
        }
    }
    
    具体实现点餐代码
    今天吃鸡肉,味道不错。。。
    具体实现买单代码
    
    
    如果把MyEat的钩子方法实现覆盖
    
    具体实现点餐代码
    今天吃鸡肉,味道不错。。。
    具体实现买单代码
    今天有打折哦
  • 相关阅读:
    03、CPU主频,和性能
    02、计算机组成原理相关知识
    常用正则表达式,手机号、固话号、身份证号等
    01、计算机原理结构,及冯诺依曼体系结构
    7-7 Complete Binary Search Tree (30分) 完全二叉搜索树
    7-2 Reversing Linked List (25分)
    7-1 Maximum Subsequence Sum (25分)
    6-17 Shortest Path [4] (25分)
    6-16 Shortest Path [3] (25分)
    6-15 Iterative Mergesort (25分)
  • 原文地址:https://www.cnblogs.com/nedhome/p/9622654.html
Copyright © 2011-2022 走看看