簡體   English   中英

裝飾靜態類C#

[英]Decorating a static class C#

我有一個設計問題。

我在一些舊代碼中使用了一個靜態類,該類調用一個靜態方法來運行某些操作。 如果滿足特定條件,我想在它之后立即調用另一個方法。

我想使用裝飾器模式,但如果不滿足條件,則無法完全返回靜態類的實例。

這就是現在正在發生的事情。

var result = StaticClass.DoSomething(some parameters);

我想要的是在另一個變量為true的情況下,在調用DoSomething之后立即將其寫入數據庫,而我不想只將帶條件的代碼堆放在舊代碼上,所以我寧願將其委托給其他類。 這就是我真正想做的。

var result = StaticClassFactory(condition).DoSomething(some parameters);

Class1
void DoSomething(parameters) {
StaticClass.DoSomething()
}

Class2
void DoSomething(parameters) {
StaticClass.DoSomething();
DoSomethignElse();
}

有什么建議么?

您可以做的是使用一個接口來表示“執行者”:

public interface IDoer
{
    void DoSomething(object parameters);
}

然后創建兩個類:

public class DefaultDoer : IDoer
{
    public void DoSomething(object parameters) 
    {
        StaticClass.DoSomething(object parameters);
    }
}

public class AugmentedDoer : IDoer
{
    public void DoSomething(object parameters) 
    {
        StaticClass.DoSomething(object parameters);
        DoSomethingElse();
    }
}

然后使用工廠返回根據條件實現IDoer的實例:

public class DoerFactory
{
    public IDoer GetDoer(object someCondition)
    {
        //Determine which instance to create and return it here
    }
}

由於沒有更多信息,我在某些情況下使用了object類型的占位符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM