Architecture 我应该将事务放在此系统中的何处
因此,我开始了一个简单系统的初步设计 我有一个名为Customer的超类/抽象。它有两个子类:PrivateCustomer和BusinessCustomer 我还有一门会计课。该账户可能是首付账户,也可能只是普通账户。它由枚举决定。 Customer类有一个帐户列表 现在,我还有一个事务类,这就是它变得棘手的地方。 事务类具有以下属性:Architecture 我应该将事务放在此系统中的何处,architecture,oop,Architecture,Oop,因此,我开始了一个简单系统的初步设计 我有一个名为Customer的超类/抽象。它有两个子类:PrivateCustomer和BusinessCustomer 我还有一门会计课。该账户可能是首付账户,也可能只是普通账户。它由枚举决定。 Customer类有一个帐户列表 现在,我还有一个事务类,这就是它变得棘手的地方。 事务类具有以下属性: 寄件人 接受者 数量 日期 类型(枚举) 正如你所想象的: 客户可以有一个或多个帐户。 客户可以进行0或更多交易。 一个账户有交易(或者其他方式?) 现在
- 寄件人
- 接受者
- 数量
- 日期
- 类型(枚举)
- 我是否有一份所有的全球清单 事务,只需过滤 列表,当我想看到所有 私人客户交易 12345
- 在 客户类,列出所有 交易
- 第三件事
只要它是一个面向对象的解决方案,我就会感到满意。为什么发送方和接收方不能引用客户对象呢。反过来说,每个客户都有一个对其参与的事务对象的引用列表。如果您的设计允许循环引用,我会这样做 大致如下:
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
}
}
使用系统;
使用System.Collections.Generic;
名称空间示例
{
公共抽象类客户
{
受保护的字符串\u名称;
//...
}
公共类私有客户:客户
{
私人清单交易;
//...
}
公共类业务客户:客户
{
私人清单交易;
//...
}
公共类事务
{
私人客户(发送者);;
私人客户(接收器);;
私人双倍金额;
私人日期时间(日期);;
私人帐户类型_AccountType;
//...
}
公共枚举帐户类型
{
首期付款,
有规律的
}
}
考虑账户信息的修订(无双关语):
使用系统;
使用System.Collections.Generic;
名称空间示例
{
公共抽象类客户
{
私人清单账户;
受保护的字符串\u名称;
//...
}
公共类私有客户:客户
{
//...
}
公共类业务客户:客户
{
//...
}
公共类事务
{
私人帐户发送者;
私人账户接收人;
私人双倍金额;
私人日期时间(日期);;
//...
}
公共抽象类帐户
{
私人客户(u客户),;
私人托收交易;
}
公共类定期帐户
{
//...
}
公营首期付款帐户
{
//...
}
}
“只要它是一个面向对象的解决方案,我就会满意。”所以没有非面向对象的答案!说实话,我不知道你的意思。我正在使用c#如果这对你有帮助的话。我只是和一个朋友讨论过如何设计这样的东西。我们找不到答案,所以我使用so作为第三方。所以答案将是我提出的第二个建议?“Customer类中的每个account属性是否都有一个所有事务的列表?”或者我没有发现有什么不同。不需要事务对象的主列表。每个客户都有对其自身交易的引用,每个交易都有对其参与的客户的引用。当然,您需要创建属性和/或构造函数来连接关系。谢谢:)
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
{
//...
}
}