讓物件導向程式設計更加靈活的的模式 裝飾模式

2022-07-15 14:48:15 字數 1089 閱讀 8372

引言

組合模式幫組我們聚合元件,裝飾模式則使用類似節後來幫組我們改變具體元件的功能

問題將所有功能簡歷在整合體系上會導致系統中的類「**式」增多,當你嘗試對整合書上不同的分支做想死的修改是,**可能會產生重複

uml圖

**實現

<?php 

/*decoration.php

裝飾模式

*/class

requesthelper{}

//抽象基類

abstract

class

processrequest

//具體的元件

class mainprocess extends

processrequest}//

抽象裝飾類

abstract

class decorateprocess extends

processrequest}//

日誌裝飾類

class logrequest extends

decorateprocess}//

認證裝飾類

class authenticaterequest extends

decorateprocess}//

認證裝飾類

class structrerequest extends

decorateprocess}//

client

$process = new authenticaterequest(new structrerequest(new logrequest(new

mainprocess())));

$process ->process(new

requesthelper());

?>

效果組合和繼承通常都是同時使用的,因此logrequest是繼承自processrequest,但是卻保險為對另外乙個processrequest物件的封裝

因為修飾物件作為子物件的包裝,所以保持基類中的方法盡可能少是很重要的

讓物件導向程式設計更加靈活的的模式 外觀模式

問題 當使用子系統的 是,有時候發現自己過於深入的呼叫子系統的邏輯 如果子系統 總是不斷變化,而你的 缺又在許多不同地方與子系統 互動,那麼隨著子系統的發展,越來越維護困難,外觀模式要解決的就是使系統中的各層互相獨立,以便專案中某一部分的修改盡量不影響其他地方。實現 外觀模式 function ge...

物件導向的程式設計之工廠模式

工廠模式是軟體工程領域一種廣為人知的設計模式,這種模式抽象了建立具體物件的過程。考慮到在ecmascript中無法建立類,開發人員就發明了一種函式,用函式來封裝以特定介面建立物件的細節,如下面的例子所示。1 function createperson name,age,job 9return o 1...

物件導向的程式設計

物件導向的程式設計 以面向過程的程式設計方式思考 1.確定長方形周長和面積的演算法。c a b 2,s a b 2.編寫兩個方法 函式 分別計算長方形的周長和面積。void double getc double a,double b void double gets double a,double ...