java裝飾設計模式

來源:互聯網
上載者:User

標籤:介面   warning   ring   swa   java   print   color   參數   rate   

將一個對象作為參數進行傳遞,然後對這個對象進行封裝---改變其中的方法或者添加一些新的行為---裝飾設計模式---裝飾者模式---Decorate Model

改變一個方法:

1. 通過繼承這個類,然後重寫其中的方法

2. 通過對象的傳遞建立裝飾對象,在裝飾類中重新提供對應的方法
繼承的缺點:

1. 單繼承

2. 利用向上造型建立了一個父類對象,可以調用子類中重寫方法,不能在使用父類中原來的方法

3. 如果父類對象已經存在,不能使用子類中重寫之後的方法

裝飾設計模式的缺點:

可能提高代碼的冗餘度---代理模式

 

 

 1 //人的介面 2 public interface Person { 3  4     void eat(); 5  6     void sleep(); 7  8 } 9 10 11 //明星的實作類別12 public class Star implements Person {13 14     @SuppressWarnings("unused")15     private Person p;16 17     public Star(Person p) {18         this.p = p;19     }20 21     @Override22     public void eat() {23         System.out.println("明星吃的是野菜~~~");24     }25 26     @Override27     public void sleep() {28         System.out.println("上床數星星~~~");29     }30 31 }32 33 //工人實作類別34 public class Worker implements Person {35 36     @Override37     public void eat() {38         System.out.println("工人吃一頓山珍海味~~~然後吃一個月的土~~~");39     }40 41     @Override42     public void sleep() {43         System.out.println("上床數星星~~~");44     }45 46 }47 48 //將工人進行封裝變成明星,但本質上工人還是工人49 public class PersonDemo {50 51     public static void main(String[] args) {52 53         Worker p = new Worker();54 55         p.eat();56 57         Star s = new Star(p);58 59         s.eat();60 61         p.eat();62 63     }64 65 }

 

java裝飾設計模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.