(1)裝飾模式定義
動態的給乙個物件新增一些額外的職責
(2)應用裝飾模式來解決的思路
透明的給乙個物件增加功能,換句話說就是要給乙個物件增加功能,但是不能讓這個物件知道,也就是不能去改動這個物件。而實現了能夠給乙個物件透明的增加功能,自然就能夠實現功能的動態組合,比如原來的物件有a功能,現在透明的給它增加了乙個b功能,是不是就相當於動態組合了a和b功能呢。
在裝飾模式的實現中,為了能夠和原來使用被裝飾物件的**實現無縫結合,是通過定義乙個抽象類,讓這個類實現與被裝飾物件相同的介面,然後在具體實現類裡面,轉調被裝飾的物件,在轉調的前後新增新的功能,這就實現了給被裝飾物件增加功能,這個思路跟「物件組合」非常類似。
在轉調的時候,如果覺得被裝飾的物件的功能不再需要了,還可以直接替換掉,也就是不再轉調,而是在裝飾物件裡面完全全新的實現。
**示例:
public inte***ce person
//需要被裝飾的物件
public class student implements person}
裝飾器,實現相同的介面
public class decorator implements person
public void saymsg()
}//測試
public class test
}
設計模式之裝飾模式簡介
作用 可以動態給乙個物件新增一些額外的功能職責。例子 就以乙個人為例,乙個什麼都不穿的人是乙個原始物件,現在要給這個人裝飾一下,我們可以給這個人穿上鞋子 內衣 褲子 外套等服飾,這就是裝飾模式原理,通過動態的擴充套件乙個物件的功能,從而使這個物件的功能更完善。裝飾模式的類結構圖 使用場合 1 在不影...
緩衝流及裝飾者模式簡介
1.1 處理流 流的概念 流是一組有順序的,有起點和終點的位元組集合,是對資料傳輸的總稱或抽象。節點流和處理流 2.1 緩衝流概述 2.2 緩衝流案例 public class buffereddemo01 緩衝流測試 public static void bufferedstreamtest01 ...
python 裝飾器簡介
24 裝飾器 1 函式名 1自動執行outer函式並且將下面的函式名f1當做引數傳遞 2將outer函式的返回值,重新賦值給f1.def outer func def inner print before r func print after return r 有返回值時這麼處理。return in...