所以我已经开始了一个简单系统的初步设计。
我有一个名为Customer的超类/抽象。它有2个子类:PrivateCustomer和BusinessCustomer。
我还有一个帐户类。此帐户可能是首期付款帐户,也可能只是普通帐户。它由Enum决定。 Customer类有一个List<>帐户。
现在,我还有一个事务类,这就是它变得棘手的地方。 事务类具有以下属性:
正如您可能想象的那样: 客户可以拥有一个或多个帐户。 客户可以进行0次或更多次交易。 帐户有交易(或者反过来?)
现在。我在哪里交易?请记住,系统可能会随着时间推移/获得[插入大量]交易。
只要是OO解决方案,我就会满意。
答案 0 :(得分:2)
为什么Sender和Receiver不是对Customer对象的引用。换句话说,每个客户都有一个对其参与的交易对象的引用列表。如果您的设计允许循环引用,这就是我的方式。
这些方面的东西:
using System;
using System.Collections.Generic;
namespace Sample
{
public abstract class Customer
{
protected string _name;
//...
}
public class PrivateCustomer : Customer
{
private List<Transaction> _transactions;
//...
}
public class BusinessCustomer : Customer
{
private List<Transaction> _transactions;
//...
}
public class Transaction
{
private Customer _sender;
private Customer _receiver;
private double _amount;
private DateTime _date;
private AccountType _accountType;
//...
}
public enum AccountType
{
Downpayment,
Regular
}
}
考虑到帐户信息的修订(没有双关语):
using System;
using System.Collections.Generic;
namespace Sample
{
public abstract class Customer
{
private List<Account> _accounts;
protected string _name;
//...
}
public class PrivateCustomer : Customer
{
//...
}
public class BusinessCustomer : Customer
{
//...
}
public class Transaction
{
private Account _sender;
private Account _receiver;
private double _amount;
private DateTime _date;
//...
}
public abstract class Account
{
private Customer _customer;
private Collection<Transaction> _transactions;
}
public class RegularAccount
{
//...
}
public class DownpaymentAccount
{
//...
}
}