標籤:介面 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裝飾設計模式