第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

結(jié)合案例深入解析模板方法設(shè)計(jì)模式

標(biāo)簽:
Java

一、基本概念

模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。

例如: 在现实生活中,完成某件事情是需要 n 个固定步骤的。如"在淘宝进行购物"这件事情的完成一般需要三个步骤: 登录网站、挑选商品、 付款。但对于登录网站与付款这两步,每个人几乎都是相同的操作。但不同的地方是,每个人所挑选的商品是不同的。 在软件开发过程中同样存在这样的情况。某类的某个方法的实现,需要几个固定步骤。在这些固定步骤中,对于该类的不同对象, 有些步骤的实现是固定不变的,有些步骤的实现是大相径庭的,有些步骤的实现是可变可不变的。对于这种情况,就适合使用模板方法设计模式编程。

二、结构

基本结构:

在模板方法设计模式中,存在一个父类(一般是抽象的)。其中包含 两类方法: 模板方法 和 3 种步骤方法;

  • 模板方法: 即实现某种算法的方法步骤。这些步骤都是调用的步骤方法实现的。

  • 步骤方法:即完成模板方法的每个阶段性方法。

    • 抽象方法: 子类必须实现的方法。即子类的个性化定义;

    • 最终方法(固定方法): 子类不能重写的方法,即所有子类都要做的步骤;

    • 钩子方法: 父类给了默认实现,子类可以重写,也可以不重写的方法;


结构:


5d07a0830001ab1707190476.jpg


三、案例

实现在网站上购物的案例。

基本逻辑图:


5d07a0840001274407190497.jpg


代码:

首先看Shopping类:

public abstract class Shopping {

    // 模板方法
    public void buyGoods(){
        useLogin(); //固定的方法,子类不能重写
        buy();      //抽象方法,子类必须实现
        pay();      //钩子方法(hook),子类可以重写
    }

    // 固定方法(最终方法)
    public final void useLogin() {
        System.out.println("用户登录");
    }

    //抽象方法
    public abstract void buy();

    // 钩子方法
    public void pay(){
        System.out.println("使用银联支付");
    }
}

然后是两个子类:

public class ShoesShopping extends Shopping {
    @Override
    public void buy() {
        System.out.println("购买Nike鞋子!!!!");
    }
}
public class ClothesShopping extends Shopping {
    @Override
    public void buy() {
        System.out.println("购买海澜之家男装!!!!!");
    }

    // 重写了钩子方法
    @Override
    public void pay() {
        System.out.println("使用支付宝支付");
    }
}

测试:

public class MyTest {

    public static void main(String[] args){
        Shopping shoesShopping = new ShoesShopping();
        shoesShopping.buyGoods();

        System.out.println("-----------------------");
        Shopping clothesShopping = new ClothesShopping();
        clothesShopping.buyGoods();
    }
}

输出:

用户登录
购买Nike鞋子!!!!
使用银联支付
-----------------------
用户登录
购买海澜之家男装!!!!!
使用支付宝支付

四、总结

有时候为了防止恶意操作,模板方法也会加上 final 关键词。


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消