Swo*_*op 15 .net c# asp.net oop
我正在使用C#编写类库.我设计了3个主要类来帮助建模数据.设计它们使得类A包含类B实例的列表,而类B包含对类C实例的引用,即:
public class Policy
{
public List < PolicyTerm > myTerms;
person Customer;
string PolicyNumber;
}
public class PolicyTerm
{
public Billing myBill;
Datetime effectivedate;
List < Activities > termActivities;
public doAction()
{
use value from Policy, like PolicyNumber;
}
}
public class Billing
{
float remainingBalance;
Datetime nextDueDate;
public void doSomething()
{
reference value from PolicyTerm, such as effective date;
use value from Policy, such as PolicyNumber;
}
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是当我尝试在PolicyTerm或Billing中使用需要来自包含类的数据的方法时.在上面的示例中,这将是尝试使用PolicyTerm中的值的方法"doSomething",例如请求或将数据保存到数据库中的术语的生效日期.
我想知道我是否因为这种情况而为我的班级设计了正确的设计.我是否应该在子类中添加对"父"类的引用,以使父数据可用?或者我是否需要重新考虑代码的整体结构和设计?
我觉得类设计适用于建模数据和业务规则,但它确实会产生一些限制,如上述情况.我喜欢将PolicyTerm和Billing分开,以便能够独立地修改和测试代码.此外,我觉得它保持每个部分更小,更简单.
任何可以提供的建议都将非常感激.
更新:代码块已更新,以提供有关代码的更多详细信息.
如果doSomething()始终需要对C对象父级的引用,则应该将此引用放入C中,以确保它引用正确的B实例.OTOH如果该引用并不总是父引用,但仍然总是引用相同的B实例,它仍然建议将其转换为成员C.如果doSomething()可以使用不同的引用调用OTOH ,则该引用应保留为方法参数.
将一个引用从子级转换为父级,或者在两个类之间具有相互依赖性本身并不坏 - 这取决于上下文.这样做的结果是这两个类不能单独使用,所以实际上它们构成了一个组件.这可能是也可能不适合您.
组件通常可以包含多个类 - 具有项的集合和迭代器实际上是典型的示例.但是,建议在物理层面上表达这些类之间的逻辑依赖关系,例如,通过使一个类成为另一个类的内部类,或者将这两个类作为内部类放在第三个类中.
| 归档时间: |
|
| 查看次数: |
5275 次 |
| 最近记录: |