Application of Abstract Classes in Java-Design Pattern of Template Method

Not much to say, just upload the code directly, the amount of code is small, simple and easy to understand, I believe you will gain something after reading it carefully.
Code example:

/**
 * @Author: YuShiwen
 * @Date: 2020/11/18 3:24 PM
 * @Version: 1.0
 */
public class TemplateMethodTest {
    
    
    public static void main(String[] args) {
    
    
        BuyAdidas adidas = new BuyAdidas();
        adidas.onlineShopping();

        System.out.println();

        BuyPuma puma = new BuyPuma();
        puma.onlineShopping();

    }
}

abstract class OnlineShoppingTemplate{
    
    

    public void openApp(){
    
    
        System.out.println("打开购物软件!");
    }

    public abstract void buyGoods();

    public void onlinePayment(){
    
    
        System.out.println("线上付款!");
    }

    // 模板方法,把基本操作组合到一起,子类一般不能重写
    public final void onlineShopping(){
    
    
        this.openApp();

        //具体执行时,挂哪个子类,就执行哪个子类的实现代码
        this.buyGoods();

        this.onlinePayment();
    }
}

class BuyAdidas extends OnlineShoppingTemplate{
    
    

    @Override
    public void buyGoods() {
    
    
        System.out.println("buy adidas goods");
    }
}

class BuyPuma extends OnlineShoppingTemplate {
    
    
    @Override
    public void buyGoods() {
    
    
        System.out.println("buy puma goods");
    }
}

Output result:

打开购物软件!
buy adidas goods
线上付款!

打开购物软件!
buy puma goods
线上付款!

Process finished with exit code 0

Guess you like

Origin blog.csdn.net/MrYushiwen/article/details/109775470