2019/05/19
2022/03/13 (新增連結)
Structural Design Patterns主要是一些class與class的結構關係,主要的目的是降低更動的影響程度,希望部分類別的更動可以不要影響到很多的相關類別,不同的pattern要解決不同的問題。
[.NET]重構之路系列v13–避免直接相依外部組件,以加解密為例
Adapter
The Adapter Pattern (jQuery) (.net)
江湖走跳,轉接頭很重要! (Adapter 適配器模式) (c# & python)
橋來橋去! 以需求大化小,小化無(抽象)為目標! (Bridge 橋接模式) (c# & python)
Bridge + Strategy
老闆最大的興趣:異動組織! 但是下個月又調回來了... (Composite 組合模式) (c# & python)
表象模式(Facade Pattern) (c#)
不用看書就會,但不一定會唸的... (Facade 外觀模式) (c# & python)
將TextLogger及DbLogger包裝起來,成為一個Facade。
public class MyLogger
{
public void Warn(string msg)
{
var textLogger = new TextLogger();
var dbLogger = new DbLogger();
textLogger.Warn(msg);
dbLogger.Warn(msg);
}
public void Read()
{
System.Diagnostics.Trace.WriteLine($"(Database)Dump logs.");
System.Diagnostics.Trace.WriteLine($"(Text)Dump logs.");
}
}
直接使用Facade(MyLogger),未來TextLogger以及DbLogger的變動可以盡量在Facade中處理。
var facade = new MyLogger();
facade.Warn("Facade works!");
facade.Read();