假设我有两个班级
class A
{
b bInstance;
public A ( b newb )
{
this.bInstance = newb;
}
}
class B
{
// some data and methods go here
}
class List<A>
{
// list of A objects also holding reference to a B object
}
对于A的每个对象,都有一个相关对象B.
现在我想对A类和A类数据进行一些操作。 B,最好是在A类或集合类中创建新类或进行操作吗?
编辑:
我需要使用A类数据并将其与B类数据一起使用以创建最终结果。数据是分开的,所以我不想将它们合并到一个类中。这没有意义。
主要是字符串操作,因为数据是字符串数据。
最佳设计方法是什么?如果有的话?
答案 0 :(得分:2)
将列表包含在对象B中会不会更简单?
class B
{
List<A> list;
// some data and methods go here
}
然后你会在B级进行操作。
编辑:
根据你上面的评论,你应该在A类中进行操作,因为它总是包含对象B的引用,它将与它自己的状态一起使用,以生成你需要的任何输出。
答案 1 :(得分:1)
好吧,看起来你正在形成一个复合结构,其中B是A的辅助,所以A应该是其他对象的主要交互点。
答案 2 :(得分:1)
如果你按照编辑中提到的那样做,那么你的课程就会受到影响,因为它们会变得过于tightly coupled。 A不应该与B过于亲密,但一个好主意可能是将该类分成另一个可以处理A和B实例的类。
例如假设以下内容:
Issue->Action Item
一对多的经典例子......
你可以这样做:
class Issue {
//define issue properties
List<ActionItem> ai;
}
class Action Item {
//define action properties
//methods
}
但是,问题可能必须对行动项目了解太多。
最好引入中间体:
class IssueActionItems
{
//define props / methods
Issue i;
List<ActionItems> l;
}
答案 3 :(得分:1)
虽然我不清楚你问题的目的,但你可以这样做:
公司只能拥有一个原籍国。 但是一个国家可以有很多公司。
public class Country
{
public int ID{get; set;}
public string CountryName{get; set;}
public List<Company> Items{get; set;}
public int SaveOrUpdate(){}
public static Country Get(int id){}
public static List<Country> Get(){}
public bool Delete(){}
}
public class Company
{
public int ID {get; set;}
public string CompanyName{get; set;}
public int CountryID{get; set;}
public Country Country{get; set;}
public int SaveOrUpdate() {}
public static Company Get(int id) {}
public static List<Company> Get(){}
public bool Delete() {}
}
public class Order
{
public int ID {get;set;}
public DateTime OrderDate {get;set;}
public List<OrderDetail> Items {get;set;}
public int SaveOrUpdate(){}
public static Order Get(int id){}
public static List<Order> Get(){}
public bool Delete(){}
}
public class OrderDetail
{
public int OrderID{get;set;}
public string ProductName{get;set;}
public double Price{get;set;}{get;set;}
public Order Order {get;}
public static void Save(TransactionContext tc, int masterID, List<OrderDetail> items){}
public static void Delete(TransactionContext tc, int masterID){}
public static List<OrderDetail> Get(TransactionContext tc, int masterID){}
}
答案 4 :(得分:0)
我会在DDD中创建一个单独的经典服务模型。然后,您可以将A和B对象传递给服务类,它将对它们起作用。