这个类和它内部的另一个类集合如何更好地编写/设计,当前的实现有什么问题
本文关键字:设计 什么 实现 问题 更好 内部 另一个 集合 何更好 | 更新日期: 2023-09-27 18:07:07
class A
{
public int MyProperty { get; set; }
public List<B> B { get; set; }
}
class B
{
public int MyProperty { get; set; }
public string MyProperty1 { get; set; }
public static List<B> CreateB(int [] parameter, string str, int number)
{
var bList = new List<B>();
foreach (var item in parameter)
{
var b = new B();
b.MyProperty = number;
b.SetProperty1(str);
bList.Add(b);
}
return bList;
}
private void SetProperty1(string s)
{
//logic here applied to 's'
this.MyProperty1 = s;
}
}
class Program
{
static void Main(string[] args)
{
int id = 123;
int [] array = new int[] { 1, 2, 3 };
var A = DataBase.GetListOfA(id);
UpdateB(A, array);
}
public static void UpdateB(List<A> data, int[] numbers)
{
var array = new int[] {5,10,15};
var str = "hi";
var number = 1;
foreach (var item in data)
{
if(item.B == null || item.B.Count == 0)
{
item.B = new List<B>();
item.B = B.CreateB(array, str, number);
}
else
{
//B.UpdateB(/*parameters here*/);
}
}
}
}
类B与A直接相关,但不能在A内部,因为每个A的类B的数量是动态的和变化的。
我不知道如何寻求帮助,但类B不应该使用静态方法创建自己的列表?
如果可能的话,B应该与A分开吗?或者我可以简单地在填充A内部属性的方法中创建B吗?
例如:创建a方法,它需要一些参数来设置a中的每个属性,从而也在该方法中创建B ?
在一个方法中创建B,该方法填充a的属性。
例如Create a方法,它接受一些参数来设置a中的每个属性从而也在该方法中创建B
那就是我要做的。这是一种与单一责任原则更紧密结合的方法。B
不需要知道它是数组中的一个元素,它只需要表示B
对象。A
知道它包含B
s的列表,因此它应该管理该列表
我时间紧迫,所以我将提供关于你问题的这一部分的建议:"我不确定如何寻求帮助,但是类B不应该使用静态方法创建自己的列表吗?"
我会让CreateB只返回一个B。如果你有一堆参数,你需要做的B(例如,一个int型数组),那么我会使用LINQ像这样:
List<B> theBees = parameter.Select(param => B.CreateB(param, str, number)).ToList();
vladimir Khorikov在他优秀的Pluralsight c#函数式编程课程中谈到了构造函数。查看vladimir在这个Email类上定义的Create方法。我认为这是一个超级干净的方式来处理对象的创建和验证