裝飾模式:雞腿堡

文章目錄

  • UML類圖
  • 目錄結構
  • Humburger.java
  • ChickenBurger.java
  • Condiment.java
  • Chuilli.java
  • Lettuce.java
  • Test.java
    • 深度理解test怎么寫

UML類圖

在這里插入圖片描述

目錄結構

我們從指向最多的開始寫

Humburger.java

package zsms;public abstract class Humburger {protected String name;public String getName(){//因為沒abstract,所以猜是具體方法return name;}public abstract double getPrice();//因為是抽象方法 ,所以什么都不用寫	
}

ChickenBurger.java

package zsms;public class ChickenBurger extends Humburger {public ChickenBurger(){//繼承了我們就初始化name = "雞腿堡";}//繼承了我們還要重寫方法@Overridepublic double getPrice(){  //給一個價格return 10; }
}

Condiment.java

package zsms;
/** 配料 佐料* */
public abstract class Condiment extends Humburger {protected Humburger humburger;public abstract String getName();//抽象類啥也不寫
}

Chuilli.java

package zsms;
/** chilli 辣椒,辣醬* */
public class Chilli extends Condiment {Humburger humburger;//再來一遍!!構造方法是初始化//有this,你的這個類里就得有 這個東西 Humburger humburgerpublic Chilli(Humburger humburger){this.humburger = humburger;}@Overridepublic String getName(){//認真理解, 你返回的是什么的名字?//是不是加了辣椒的漢堡?return humburger.getName()+"加辣椒";}@Overridepublic double getPrice(){//返回的是誰的價格?//是不是帶有辣椒的漢堡?//辣椒是免費的,所以直接返回 漢堡的價格return humburger.getPrice();}
}

Lettuce.java

package zsms;
/** 生菜*/
public class Lettuce extends Condiment {Humburger humburger;//構造方法  初始化  就是this public Lettuce(Humburger humburger){this.humburger = humburger;}@Overridepublic String getName(){/** get誰的名字?* 加了生菜的漢堡的名字*/return humburger.getName()+"加生菜";}@Override public double getPrice(){/** get誰的price?* 加了生菜的漢堡的價格* 生菜一塊錢*/return humburger.getPrice()+1;}}

Test.java

深度理解test怎么寫


package zsms;public class Test {public static void main(String[] args) {//weisha //h什么也沒有加Humburger h = new ChickenBurger();System.out.println(h.getName() + h.getPrice());//h1加生菜Humburger h1 = new Lettuce(h);System.out.println(h1.getName() + h1.getPrice());//h2加雙倍生菜Humburger h2 = new Lettuce(h1);System.out.println(h2.getName() + h2.getPrice());//h3加辣椒Humburger h3 = new Chilli(h);System.out.println(h3.getName() + h3.getPrice());//h4都加Humburger h4 = new Chilli(h1);System.out.println(h4.getName() + h4.getPrice());}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/18171.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/18171.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/18171.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【接口自動化_05課_Pytest接口自動化簡單封裝與Logging應用】

一、關鍵字驅動--設計框架的常用的思路 封裝的作用:在編程中,封裝一個方法(函數)主要有以下幾個作用:1. **代碼重用**:通過封裝重復使用的代碼到一個方法中,你可以在多個地方調用這個方法而不是…

C++貪心算法(3)

整數區間 #include<bits/stdc.h> using namespace std; int main() {int n;cin>>n;int a[110][10]{0};for(int i0;i<n;i){cin>>a[i][1]>>a[i][2];}int cnt[110]{0};int mi99999;int mii-1;bool f[110]{false,false,false,false,false,false,false,…

debian讓dotnet 程序以守護進程方式運行,如果意外退出主動開啟

創建服務文件: 打開一個新的.service文件在/etc/systemd/system/目錄下&#xff0c;例如myapp.service sudo nano /etc/systemd/system/myapp.service編輯服務文件: 添加以下內容到myapp.service文件&#xff0c;確保修改ExecStart以指向你的.NET Core應用程序的可執行文件&am…

JVM-調優之-高內存占用問題排查

排查思路 1&#xff09;檢查jvm內存的分配情況 2&#xff09;檢查jvm的gc情況 3&#xff09; 找出占用量比較大的對象 第一步&#xff1a;jmap -heap PID 查看jvm內存使用情況 jmap -heap 2525 可以看到老年代年輕代等其他內存區域內存使用率百分比 第二步&#xff1a;jsta…

Golang:使用roylee0704/gron實現定時任務

可以使用roylee0704/gron實現定時任務 文檔 https://github.com/roylee0704/gronhttps://pkg.go.dev/github.com/roylee0704/gron 安裝 go get github.com/roylee0704/gron代碼示例 package mainimport ("fmt""time""github.com/roylee0704/gron…

如何用分立器件設計一個過流保護電路

過流保護電路是指當后級負載電流過大或者發生短路時&#xff0c;自動切斷電源與后級負載&#xff0c;從而防止大電流損害電源電路&#xff0c;過流保護又叫OCP。 常見的過流保護電路有保險絲過流保護&#xff0c;集成的過流保護芯片&#xff0c;還有這種分立器件搭建的過流保護…

Browserify:將 Node.js 模塊轉換為瀏覽器可用的 JavaScript

什么是 Browserify&#xff1f; Browserify 是一個 JavaScript 工具&#xff0c;用于將 Node.js 模塊轉換為在瀏覽器環境中可用的單個 JavaScript 文件。通過 Browserify&#xff0c;您可以使用 require() 函數引入其他模塊&#xff0c;就像在 Node.js 中一樣&#xff0c;而不…

詳解 Scala 的隱式轉換

當編譯器第一次編譯失敗的時候&#xff0c;會在當前的環境中查找能讓代碼編譯通過的方法&#xff0c;用于將某個類型進行轉換&#xff0c;實現二次編譯通過 一、隱式函數 隱式函數可以在不修改任何代碼的情況下&#xff0c;擴展某個類的功能 /**聲明語法&#xff1a;implicit d…

Ubuntu上安裝Maven

在Ubuntu上安裝Maven的步驟如下&#xff1a; 更新包索引&#xff1a; sudo apt update 安裝Maven&#xff1a; sudo apt install maven 驗證安裝是否成功&#xff1a; mvn -version 以上步驟將會安裝Maven并添加到系統路徑中&#xff0c;你可以通過運行mvn -version來驗…

TIM輸出比較

一、OC&#xff08;Output Compare&#xff09;輸出比較 1、輸出比較可以通過比較CNT&#xff08;計數器&#xff09;與CCR&#xff08;捕獲/比較寄存器&#xff09;寄存器值的關系&#xff0c;來對輸出電平進行置1、置0或翻轉的操作&#xff0c;用于輸出一定頻率和占空比的PW…

微信小程序連接阿里云快速入門【物聯網】

一、前言 1.1 項目背景 隨著5G的逐漸普及&#xff0c;萬物互聯的浪潮已經席卷而來。在萬物互聯的場景下&#xff0c;如何實現設備之間的互聯互通&#xff0c;成為了一個亟待解決的問題。 微信小程序作為一款輕量級的小程序開發框架&#xff0c;以其簡潔的語法和豐富的組件庫…

08、SpringBoot 源碼分析 - 自動配置深度分析一

SpringBoot 源碼分析 - 自動配置深度分析一 refresh和自動配置大致流程如何自動配置SpringBootApplication注解EnableAutoConfiguration注解AutoConfigurationImportSelector自動配置導入選擇器DeferredImportSelectorHandler的handleDeferredImportSelectorGroupingHandler的r…

【學習筆記】C++每日一記[20240520]

簡述幾種內存泄漏的預防機制 用智能指針代替普通指針&#xff0c;由于智能指針自帶引用計數功能&#xff0c;能夠記錄動態分配空間的引用數量&#xff0c;在引用計數為零時&#xff0c;自動調用析構函數釋放空間。 借助一些內存泄漏檢測工具&#xff0c;例如Valgrind、Memche…

DNS 解析過程

文章目錄 簡介特點查詢方式??1. 瀏覽器緩存2. 系統緩存&#xff08;hosts文件&#xff09;3. 路由器緩存4. 本地域名服務器5. 根域名服務器6. 頂級域名服務器7. 權限域名服務器8. 本地域名服務器緩存并返回9. 操作系統緩存并返回10. 瀏覽器緩存并訪問流程圖 總結 簡介 DNS&a…

Enable Full Line suggestions 啟用全行建議

開啟后效果如下&#xff1a; 直接提示可能要輸入的參數

基于 Solana 的 Drift Protocol 快速崛起,重新定義去中心化衍生品市場

隨著區塊鏈技術的快速發展&#xff0c;加密市場的格局正在悄然改變。投資者對透明度、效率和去中心化的需求愈發強烈&#xff0c;之前完全由中心化交易主導的加密貨幣交易&#xff0c;開始向鏈上轉移。 根據 Coingecko 的最新數據&#xff0c;CEX 和 DEX 的現貨交易量已經達到了…

WWW24因果論文(3/8) |通過因果干預實現圖分布外泛化

【摘要】由于圖神經網絡 (GNN) 通常會隨著分布變化而出現性能下降&#xff0c;因此分布外 (OOD) 泛化在圖學習中引起了越來越多的關注。挑戰在于&#xff0c;圖上的分布變化涉及節點之間錯綜復雜的互連&#xff0c;并且數據中通常不存在環境標簽。在本文中&#xff0c;我們采用…

系統開發與運行知識

系統開發與運行知識 導航 文章目錄 系統開發與運行知識導航一、軟件工程二、軟件生命周期三、開發模型四、開發方法五、需求分析結構化分析 六、數據流圖分層數據流圖的畫法設計注意事項 七、數據字典數據字典的內容 八、系統設計九、結構化設計常用工具十、面向對象十一、UML…

C++中Lambda表達式的使用場景

Lambda表達式在C中有許多常用的使用場景&#xff0c;下面舉例說明幾個常見的場景&#xff1a; STL算法中的自定義比較器&#xff1a;在使用STL算法時&#xff0c;有時需要自定義比較器來指定元素的排序規則。Lambda表達式可以方便地定義簡單的比較器&#xff0c;例如在std::so…

B+樹和B*樹

B樹和B*樹 一、B樹的簡單介紹二、B樹的插入過程三、B*樹的簡單介紹四、B樹、B樹、B*樹總結五、B樹的應用1、MyISAM索引實現2、InnoDB索引實現 一、B樹的簡單介紹 B樹是B樹的變形&#xff0c;是在B樹基礎上優化的多路平衡搜索樹&#xff0c;B樹的規則跟B樹基本類似&#xff0c;但…