摘要:概念裝飾模式顧名思義,裝飾模式是一種對對象數據的多次過濾,就像裝飾一樣,一層層的修飾,獲取滿意的結果。實現裝飾者裝飾操作這是個洗菜操作。總結當我們需要對數據進行過濾的時候,裝飾模式可以成為你的選擇
概念:
裝飾模式: 顧名思義,裝飾模式是一種對對象數據的多次過濾,就像裝飾一樣, 一層層的修飾, 獲取滿意的結果。 裝飾模式共分為兩個部分: 1: 裝飾者: 在這個接口接口下面的類和方法用以對數據進行修飾(即對數據進行過濾修改) 2: 被裝飾者: 這個就是要被過濾的數據接口對象情景:
炒菜之前要對買來的菜進行揀菜, 洗菜等操作。這個就類似于裝飾操作, 裝飾者就是洗凈的過程操作, 被裝飾者就是菜。實現:
//裝飾者 abstract class Decorator { //裝飾操作 abstract function process(Cai $cai); } class XiCai extends Decorator { public function process(Cai $cai) { echo "這是個洗菜操作。結果:
"; } } //被裝飾者 abstract class Cai { abstract function getGanJingZhi(); } //青菜 class QingCai extends Cai { public function getGanJingZhi() { return 2; } } //白菜 class BaiCai extends Cai { public function getGanJingZhi() { return 3; } } //讓已經裝飾的裝飾者再進行新的裝飾,表示多步過濾 abstract class DecorateActor extends Decorator { protected $decorator; public function __construct(Decorator $d) { $this->decorator = $d; } function process(Cai $cai) { $this->decorator->process($cai); } } //揀菜操作 class JianCai extends DecorateActor { public function process(Cai $cai) { echo "這是個揀菜操作。
"; parent::process($cai); //進行下一步過濾 } } //泡菜操作 class PaoCai extends DecorateActor { public function process(Cai $cai) { echo "這是個浸泡操作。
"; parent::process($cai); //進行下一步過濾 } } $cai = new QingCai(); $process = new JianCai(new PaoCai(new XiCai($cai))); $process->process($cai);
這是個揀菜操作。 這是個浸泡操作。 這是個洗菜操作。
總結: 當我們需要對數據進行過濾的時候, 裝飾模式可以成為你的選擇
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/20852.html
摘要:裝飾器模式解決的問題修飾模式,是面向對象編程領域中,一種動態地往一個類中添加新的行為的設計模式。可以看到,這樣的模型很具有擴者性,我們可以輕松的添加其他裝飾器給區域對象,且不需要更改其他類, 裝飾器模式解決的問題 修飾模式,是面向對象編程領域中,一種動態地往一個類中添加新的行為的設計模式。就功能而言,修飾模式相比生成子類更為靈活,這樣可以給某個對象而不是整個類添加一些功能。 將所有的功...
摘要:概念裝飾器模式允許向一個現有的對象添加新的功能,同時又不改變其結構。這種類型的設計模式屬于結構型模式,它是作為現有的類的一個包裝。這種模式創建了一個裝飾類,用來包裝原有的類,并在保持類方法簽名完整性的前提下,提供了額外的功能。 概念 裝飾器模式(Decorator Pattern)允許向一個現有的對象添加新的功能,同時又不改變其結構。這種類型的設計模式屬于結構型模式,它是作為現有的類的...
摘要:我們可以把取消發貨單和取消訂單看成一個被觀察或被訂閱的類實例的對象,一旦發生取消行為,我們立即通知各個觀察者做出相對應的行為。裝飾器模式裝飾器思想,不管以前業務邏輯,甚至不去讀,調用之前的接口裝飾上新的數據,達到自己的目的。 前言 還是每月的目標至少寫一篇文章,一晃八月份就要過去了,這個月依然沒有什么產出,毫無疑問最近的狀態就是不停的工作,不停的加班。所以還是把最近工作進行一個總結,首...
閱讀 3489·2023-04-25 20:41
閱讀 2660·2023-04-25 16:40
閱讀 1433·2021-09-23 11:44
閱讀 1252·2021-09-10 10:51
閱讀 1681·2021-09-07 09:59
閱讀 1642·2019-12-27 12:08
閱讀 551·2019-08-30 15:44
閱讀 3334·2019-08-30 11:08