常用設(shè)計模式介紹(文末有項目連接)

1:單例模式  
            創(chuàng)建一個單例對象 避免重復(fù)創(chuàng)建對象而導(dǎo)致的資源浪費(fèi)

2:工廠模式  
             主要分簡單工廠 工廠方法  抽象工廠        
             其中抽象工廠了解即可:實際上是一個類中創(chuàng)建多類對象
              
             簡單工廠:把創(chuàng)建對象的邏輯抽取出來 形成一個真正生產(chǎn)對象的工廠類 (或工廠方法)
             工廠方法: 使用內(nèi)外部工廠的結(jié)構(gòu)  外部工廠生產(chǎn)內(nèi)部工廠   內(nèi)部工廠真正的生產(chǎn)對象
             可以使用Map集合容器來存儲創(chuàng)建好的 有狀態(tài) 或者 無狀態(tài)的對象            

3:代理模式  
             靜態(tài)代理 與 動態(tài)代理
             靜態(tài)代理  A 調(diào)用 B的方式時  先經(jīng)過B的代理類的方法 通過代理類的方法做增強(qiáng) (每一個方法都需要代理)
             動態(tài)代理  利用反射完成AOP思想  在實現(xiàn)接口的實現(xiàn)類中 直接代理所有方法  在所有方法前后做增強(qiáng) (自動代理所有的方法)           
              
4:裝飾器模式  
               裝飾器類與普通類 一起繼承抽象類或者實現(xiàn)父接口類  
               因此裝飾器利用了組合的方法  可以使用多個裝飾器組合在一起 對某個類的某個方法 做各種增強(qiáng)
               裝飾器類里面的方法名 與 普通類的方法名一致  并且調(diào)用普通方法  在調(diào)用前后實現(xiàn)了增強(qiáng)
 注意:
     代理和裝飾器的區(qū)別
     1:代理通常是   使用反射的方法  增強(qiáng)所有方法  并且 增強(qiáng)前后與本身方法沒有太大關(guān)聯(lián)(打印日志)
     2:裝飾器通常是 使用類組合的方法 增強(qiáng)單個方法  并且 增強(qiáng)前后與本身方法有太大關(guān)聯(lián) (支付時積分抵扣)

5:模板模式                   
             使用抽象類做為模板  抽象類中用使用final修飾的方法 去順序調(diào)用本抽象類的其他方法
             實現(xiàn)類繼承了該抽象類的模板就需要 按照該模板來執(zhí)行相應(yīng)的邏輯  做到了代碼規(guī)范流程的作用 

6:觀察者模式 
              實際上觀察者模式就是發(fā)布訂閱模式  一個發(fā)布者 多個訂閱者 類似于消息框架 或者 spring的監(jiān)聽器
              發(fā)布者具有注冊訂閱者功能  使用Map集合容器存儲訂閱者的信息 當(dāng)發(fā)布者發(fā)布信息對容器中的訂閱發(fā)送消息即可
              
7: 策略模式
             策略模式 主要是用來做策略(邏輯)的選擇 同時避免大量的if-else判斷
             主要通過方法:
                1:可以使用枚舉來獲取對應(yīng)的 策略類型  
                2:可以使用枚舉來獲取對應(yīng)的 策略對象
                3:可以使用Map集合容器來存儲策略對象 并 根據(jù)策略類型獲取Map集合容器的策略對象  
             最終達(dá)到:完全避免了if-else 就能 使用 有狀態(tài)或者無狀態(tài) 的策略對象并執(zhí)行對應(yīng)邏輯   

項目連接

請配合項目代碼食用效果更佳:
項目地址:
https://github.com/hesuijin/hesujin-design-pattern
Git下載地址:
https://github.com.cnpmjs.org/hesuijin/hesujin-design-pattern.git
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容