日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

【设计模式】装饰器模式的使用

發布時間:2024/2/28 asp.net 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【设计模式】装饰器模式的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題來源

我們在進行軟件系統設計的時候,有一些業務(如下圖,一些通用的非功能性需求)是多個模塊都需要的,是跨越模塊的。把它們放到什么地方呢?

最簡單的辦法就是把這些通用模塊的接口寫好,讓程序員在實現業務模塊的時候去調用。

這樣做的缺點是,日志、安全、事務、統計性能等相關代碼幾乎把真正的業務代碼淹沒了。重復的代碼會變得非常多。

設計模式:模板方法


調用方式很簡單:

BaseCommand cmd = new PlaceOrderCommand(xxx); cmd.execute();

子類變得很清爽,只需要關注業務邏輯就可以了。

這種方式的巨大缺陷是:父類會定義一切。要定義哪些非功能性代碼、執行順序,子類都只能無條件接受。如果有一個子類,根本不需要某個功能,也無法去掉。

設計模式:裝飾器模式



現在讓這個 PlaceHolderCommand 能夠打印日志,進行性能統計:

Command cmd = new LoggerDecorator(new PerformanceDecorator(new PlaceOrderCommand())); cmd.execute();

如果 PaymantCommand 只需要打印日志,那么裝飾一次就可以了。

Command cmd = new LoggerDecorator(new PaymentCommand()); cmd.execute();

可以使用任意數量的裝飾器,還可以以任意次序執行,是不是很靈活?

總結

以上是生活随笔為你收集整理的【设计模式】装饰器模式的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。