按逻辑对方法进行分组

use*_*894 0 c# class-structure

基本上我有一个带有私有方法的类和许多调用此私有方法的公共方法。我想对这些公共方法进行逻辑分组(最好是单独的文件),以便将其组织起来,更易于使用和维护。

public class MainClass
{
    private void Process(string message)
    {
        // ...
    }

    public void MethodA1(string text)
    {
        string msg = "aaa" + text;
        Process(msg);
    }
    public void MethodA2(int no)
    {
        string msg = "aaaaa" + no;
        Process(msg);
    }

    public void MethodB(string text)
    {
        string msg = "bb" + text;
        Process(msg);
    }

    // lots of similar methods here
}
Run Code Online (Sandbox Code Playgroud)

现在我这样称呼他们:

MainClass myMainClass = new MainClass();
myMainClass.MethodA1("x");
myMainClass.MethodA2(5);
myMainClass.MethodB("y");
Run Code Online (Sandbox Code Playgroud)

我希望能够这样称呼他们:

myMainClass.A.Method1("x");
myMainClass.A.Method2(5);
myMainClass.B.Method("y");
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现它?可能有一种我不知道的简单方法。

Mat*_*zer 5

您正在寻找对象组合

在计算机科学中,对象组合(不要与函数组合混淆)是将简单对象或数据类型组合成更复杂的对象或数据类型的一种方法。

顺便说一句,您不应该认为这样的重构在逻辑上对方法进行分组:只是您需要以明确的关注点分离来实现代码:

在计算机科学中,关注点分离 (SoC) 是一种设计原则,用于将计算机程序分成不同的部分,以便每个部分处理一个单独的关注点。

实际例子:

public class A
{
    // B is associated with A
    public B B { get; set; }
}

public class B
{
     public void DoStuff() 
     {
     }
}

A a = new A();
a.B = new B();
a.B.DoStuff();
Run Code Online (Sandbox Code Playgroud)