逻辑分组方法
Grouping methods logically
基本上我有一个带有私有方法的 class 和许多调用此私有方法的 public 方法。我想在逻辑上对这些 public 方法进行分组(最好是分隔文件),以便组织起来,更易于使用和维护。
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
}
现在我这样称呼他们:
MainClass myMainClass = new MainClass();
myMainClass.MethodA1("x");
myMainClass.MethodA2(5);
myMainClass.MethodB("y");
我希望能够这样称呼他们:
myMainClass.A.Method1("x");
myMainClass.A.Method2(5);
myMainClass.B.Method("y");
如何实现?可能有一种我不知道的简单方法。
您可以使用嵌套 classes:
public class MainClass
{
// private method here
public class A
{
// methods for A go here
}
public class B
{
// methods for B go here
}
}
如果您希望它们在不同的文件中,您可以对 MainClass
使用部分 class
// file 1
public partial class MainClass
{
public class A { }
}
// file 2
public partial class MainClass
{
public class B { }
}
您正在寻找 object composition。
In computer science, object composition (not to be confused with
function composition) is a way to combine simple objects or data types
into more complex ones.
顺便说一句,你不应该认为这样的重构是逻辑分组方法:只是你需要用一个清除 separation of concerns:
In computer science, separation of concerns (SoC) is a design
principle for separating a computer program into distinct sections,
such that each section addresses a separate concern.
实际例子:
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();
您可以移动方法来分隔 类。 类 可能是新的 类,依赖于 MainClass
,使用 public/internal Process
方法,嵌套在 MainClass
中或继承自 MainClass
。继承示例:
public class MainClass
{
protected void Process(string message)
{
// ...
}
}
public class A: MainClass
{
// methods for A go here
}
public class B: MainClass
{
// methods for B go here
}
基本上我有一个带有私有方法的 class 和许多调用此私有方法的 public 方法。我想在逻辑上对这些 public 方法进行分组(最好是分隔文件),以便组织起来,更易于使用和维护。
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
}
现在我这样称呼他们:
MainClass myMainClass = new MainClass();
myMainClass.MethodA1("x");
myMainClass.MethodA2(5);
myMainClass.MethodB("y");
我希望能够这样称呼他们:
myMainClass.A.Method1("x");
myMainClass.A.Method2(5);
myMainClass.B.Method("y");
如何实现?可能有一种我不知道的简单方法。
您可以使用嵌套 classes:
public class MainClass
{
// private method here
public class A
{
// methods for A go here
}
public class B
{
// methods for B go here
}
}
如果您希望它们在不同的文件中,您可以对 MainClass
使用部分 class// file 1
public partial class MainClass
{
public class A { }
}
// file 2
public partial class MainClass
{
public class B { }
}
您正在寻找 object composition。
In computer science, object composition (not to be confused with function composition) is a way to combine simple objects or data types into more complex ones.
顺便说一句,你不应该认为这样的重构是逻辑分组方法:只是你需要用一个清除 separation of concerns:
In computer science, separation of concerns (SoC) is a design principle for separating a computer program into distinct sections, such that each section addresses a separate concern.
实际例子:
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();
您可以移动方法来分隔 类。 类 可能是新的 类,依赖于 MainClass
,使用 public/internal Process
方法,嵌套在 MainClass
中或继承自 MainClass
。继承示例:
public class MainClass
{
protected void Process(string message)
{
// ...
}
}
public class A: MainClass
{
// methods for A go here
}
public class B: MainClass
{
// methods for B go here
}