亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

談談模板方法模式

標簽:
Java

老规矩,看看百科上是怎么描述模板方法模式的:模板方法模式定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式。让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤。

回到实际开发中,代码写多了,可能就会碰到这么样的一种情况,我们有两个算法,两个算法在整体上来看上差不多的,但是细节上又有一点差异。

比如泡茶和泡咖啡。

从整体上来看,就是放入原料,然后冲入开水,最后再搅拌一下,最后喝下去。

但是细节上又有一点不同,比如第一步,泡茶放的是茶叶,而泡咖啡则是导入咖啡粉。而且泡茶和泡咖啡所用的水可能也不一样。

那么,为了实现完美的代码,或者要实现代码复用,我们应该怎么做?

这时候,模板方法模式就派上用场了,让我们开始撸代码吧。

定义一个抽象类:该类有一个brew方法,里面分别进行加入原料,加入热水,搅拌等操作,这些操作都是抽象的,也就是还没有被实现,需要给子类去实现。

abstract class Drink{

       void brew(){
           //放入原料
           putMaterial();
           //加入开水
           addBoliedWater();
           //搅拌
           stir();

       }

       abstract void putMaterial();

       abstract void addBoliedWater();

       abstract void stir();
   }

然后顶一个泡茶子类,继承饮料这个类,然后实现它的方法:

class Tea extends Drink{

       @Override
       void putMaterial() {
           System.out.println("放入茶叶");
       }

       @Override
       void addBoliedWater() {
           System.out.println("加入85度的开水");
       }

       @Override
       void stir() {
           System.out.println("慢慢搅拌");
       }
   }

把关键步骤留给子类去实现,接下来运行一下brew这个方法

Tea tea = new Tea();
tea.brew();

运行结果:

放入茶叶
加入85度的开水
慢慢搅拌

那么,我们也可以运用同样的操作煮一杯咖啡:

class Coffe extends Drink{

   @Override
   void putMaterial() {
       System.out.println("加入咖啡粉");
   }

   @Override
   void addBoliedWater() {
       System.out.println("加入90度开水");
   }

   @Override
   void stir() {
       System.out.println("快速搅拌");
   }
}
Coffe coffe= new Coffe();
coffe.brew();

运行结果:

加入咖啡粉
加入90度开水
快速搅拌


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

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

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消