您好,登錄后才能下訂單哦!
這篇文章主要講解了“Java IO的裝飾模式原理”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java IO的裝飾模式原理”吧!
Java 處理流相當于對節點流(以File 或Byte 開頭的類)進行了包裝裝飾,裝飾模式原理如下
package com.sxt.io; /** * 模擬咖啡 * 1、抽象組件:需要裝飾的抽象對象(接口或抽象父類) * 2、具體組件:需要裝飾的對象 * 3、抽象裝飾類:包含了對抽象組件的引用以及裝飾著共有的方法 * 4、具體裝飾類:被裝飾的對象 * * @author TW */ public class DecorateTest02 { public static void main(String[] args) { Drink coffee = new Coffee(); Drink suger = new Suger(coffee); //裝飾 System.out.println(suger.info() + "-->" + suger.cost()); Drink milk = new Milk(coffee);//裝飾 System.out.println(milk.info() + "-->" + milk.cost()); milk = new Milk(suger);//裝飾 System.out.println(milk.info() + "-->" + milk.cost()); } } //抽象組件 interface Drink { double cost(); //費用 String info(); //說明 } //具體組件 class Coffee implements Drink { private String name = "原味咖啡"; @Override public double cost() { return 10; } @Override public String info() { return name; } } //抽象裝飾類 abstract class Decorate implements Drink { //對抽象組件的引用 private Drink drink; public Decorate(Drink drink) { this.drink = drink; } @Override public double cost() { return this.drink.cost(); } @Override public String info() { return this.drink.info(); } } //具體裝飾類 class Milk extends Decorate { public Milk(Drink drink) { super(drink); } @Override public double cost() { return super.cost() * 4; } @Override public String info() { return super.info() + "加入了牛奶"; } } class Suger extends Decorate { public Suger(Drink drink) { super(drink); } @Override public double cost() { return super.cost() * 2; } @Override public String info() { return super.info() + "加入了蔗糖"; } }
感謝各位的閱讀,以上就是“Java IO的裝飾模式原理”的內容了,經過本文的學習后,相信大家對Java IO的裝飾模式原理這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。