W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
裝飾模式在不鏈接其結(jié)構(gòu)的情況下向現(xiàn)有對(duì)象添加新功能。
它是一種結(jié)構(gòu)型模式,因?yàn)樗洚?dāng)現(xiàn)有類(lèi)的包裝器。
裝飾模式創(chuàng)建一個(gè)裝飾器類(lèi)來(lái)包裝原始類(lèi)并提供其他功能。
interface Printer { void print(); } class PaperPrinter implements Printer { @Override public void print() { System.out.println("Paper Printer"); } } class PlasticPrinter implements Printer { @Override public void print() { System.out.println("Plastic Printer"); } } abstract class PrinterDecorator implements Printer { protected Printer decoratedPrinter; public PrinterDecorator(Printer d){ this.decoratedPrinter = d; } public void print(){ decoratedPrinter.print(); } } class Printer3D extends PrinterDecorator { public Printer3D(Printer decoratedShape) { super(decoratedShape); } @Override public void print() { System.out.println("3D."); decoratedPrinter.print(); } } public class Main { public static void main(String[] args) { Printer plasticPrinter = new PlasticPrinter(); Printer plastic3DPrinter = new Printer3D(new PlasticPrinter()); Printer paper3DPrinter = new Printer3D(new PaperPrinter()); plasticPrinter.print(); plastic3DPrinter.print(); paper3DPrinter.print(); } }
上面的代碼生成以下結(jié)果。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: