<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Javascript的裝飾器模式與php、python對比用法詳解

        來源:懂視網 責編:小采 時間:2020-11-27 20:15:16
        文檔

        Javascript的裝飾器模式與php、python對比用法詳解

        Javascript的裝飾器模式與php、python對比用法詳解:修飾模式(Decorator Pattern),又叫裝飾者模式,是面向對象編程領域中,一種動態地往一個類中添加新的行為的設計模式。就功能而言,修飾模式相比生成子類更為靈活,這樣可以給某個對象而不是整個類添加一些功能。例如,有一個技術論壇,用戶通過留言進行溝通
        推薦度:
        導讀Javascript的裝飾器模式與php、python對比用法詳解:修飾模式(Decorator Pattern),又叫裝飾者模式,是面向對象編程領域中,一種動態地往一個類中添加新的行為的設計模式。就功能而言,修飾模式相比生成子類更為靈活,這樣可以給某個對象而不是整個類添加一些功能。例如,有一個技術論壇,用戶通過留言進行溝通

        修飾模式(Decorator Pattern),又叫裝飾者模式,是面向對象編程領域中,一種動態地往一個類中添加新的行為的設計模式。就功能而言,修飾模式相比生成子類更為靈活,這樣可以給某個對象而不是整個類添加一些功能。

        例如,有一個技術論壇,用戶通過留言進行溝通,由于剛開始論壇里都是熟人,幾乎都不需要對留言的內容作出審核,接收留言的頁面可以是這樣:

        class SaveMsg(){
         private $msg;
         public function __construct($msg){
         $this->msg=$msg;
         }
         public function __store(){
         //存入數據庫
         }
        }

        后來,隨著論壇逐漸出名,就有一些人在上面發鏈接,就需要對含有鏈接的消息進行過濾,論壇進一步發展,發現除開發垃圾鏈接的外,還有很多無用的灌水,到后來可能還有攻擊等等各種不正常的帖子,所以對論壇帖子的管理,可以單獨抽象出一個類進行管理,當需要擴充過濾規則時,可以進行動態擴充。

        //基類
        abstract class Filter{
         abstract public function isForbid();
        }
        //基礎過濾類
        class MsgFilter extends Filter{
         public $content;
         public function __construct($msg){
         $this->content=$msg;
         }
         public function isForbid(){
         if(preg_match("/https?/i",$this->content)){
         return [true,"Not Allowed Urls"];
         }else{
         return [false];
         }
         }
        }
        //裝飾器,用來擴充功能
        abstract class FilterDecorator extends Filter{
         protected $obj;
         public function __construct(Filter $obj){
         $this->obj=$obj;
         }
        }
        //新過濾器,判斷是否重復發帖
        class repeat extends FilterDecorator{
         public function isForbid(){
         if($this->obj->isForbid()[0] === true){
         //判定是否包含url
         return $this->obj->isForbid();
         }else if($this->obj->content == "this is a test"){
         //判定是否重復發帖
         return [true,"Repeat Posts"];
         }else{
         return [false];
         }
         }
        }
        $test = new MsgFilter("httpsfdjoafdsajof");
        print_r($test->isForbid());//被禁止
        $test2 = new repeat(new MsgFilter("this is a test"));
        print_r($test2->isForbid());//被禁止

        在python中,不存在抽象類和方法,實現就更加簡單:

        #!/usr/bin/env python
        class Filter():
         pass
        class MsgFilter(Filter):
         def __init__(self,msg):
         self.content=msg
         def isForbid(self):
         if('http' in self.content):
         return [True,"Not Allowed Urls"]
         else:
         return [False]
        class FilterDecorator(Filter):
         def __init__(self,obj):
         self._obj=obj
        class Repeat(FilterDecorator):
         def isForbid(self):
         if self._obj.isForbid()[0]:
         return self._obj.isForbid()
         elif self._obj.content == 'this is a test':
         return [True,"Repeat Posts"];
         else:
         return [False]
        test = MsgFilter("this is a content have http urls")
        print test.isForbid()
        test2 = Repeat(MsgFilter('this is a test'))
        print test2.isForbid()

        Javascript中,沒有嚴格的類,所有繼承都基于原型,理解起來會稍費功夫:

        由于Javascript缺少類的特性,繼承對于它來說就顯得有點雞肋了,上面的代碼看起來更像是對兩個函數的處理, 在python中,有更加簡單的添加裝飾器的方法,直接通過”@”給函數自動添加裝飾器,達到擴展功能的目的,如:

        裝飾模式的目的是解決動態擴展功能的難題,裝飾模式的本質是對對象的靈活處理,理解裝飾模式,不僅能深入了解面向對象的程序設計,更能提高編程的思維能力。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Javascript的裝飾器模式與php、python對比用法詳解

        Javascript的裝飾器模式與php、python對比用法詳解:修飾模式(Decorator Pattern),又叫裝飾者模式,是面向對象編程領域中,一種動態地往一個類中添加新的行為的設計模式。就功能而言,修飾模式相比生成子類更為靈活,這樣可以給某個對象而不是整個類添加一些功能。例如,有一個技術論壇,用戶通過留言進行溝通
        推薦度:
        標簽: 裝飾 模式 php
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲欧美日韩中文高清www777 | a毛片全部播放免费视频完整18| 日韩免费无砖专区2020狼| 亚洲成综合人影院在院播放| 91精品国产免费入口| 久久久久亚洲AV成人片| 0588影视手机免费看片| 亚洲综合丁香婷婷六月香| 毛片免费视频在线观看| 国产亚洲蜜芽精品久久| 亚洲阿v天堂在线2017免费| 亚州**色毛片免费观看| 国产精品亚洲一区二区三区在线| a毛片免费全部播放完整成| 亚洲一区二区三区首页| 免费看片在线观看| 亚洲国产精品无码观看久久| 久久综合日韩亚洲精品色| 久久99青青精品免费观看| 亚洲第一永久在线观看| 久久精品无码一区二区三区免费| 欧美亚洲国产SUV| 国产美女亚洲精品久久久综合| 国产免费无码AV片在线观看不卡| 亚洲人成网网址在线看| 国产一区视频在线免费观看| 久久精品无码专区免费| 麻豆亚洲AV永久无码精品久久| 无码国产精品久久一区免费| 老司机精品视频免费| 亚洲国产综合专区在线电影| 搡女人免费视频大全| 国产高清视频免费在线观看| 亚洲欧洲高清有无| 一区国严二区亚洲三区| 全部免费毛片在线播放| 美女被暴羞羞免费视频| 78成人精品电影在线播放日韩精品电影一区亚洲 | 本免费AV无码专区一区| 亚洲精品视频在线观看视频| 国产午夜影视大全免费观看|