将类的属性类型设计为接口类型
我将开支类(Expense)设计如下:
public class Expense
{
private IAccount account;
private decimal amount;
public decimal Amount
{
get { return amount; }
set { amount = value; }
}
public IAccount Account
{
get { return account; }
set { account = value; }
}
public void Register()
{
account.Draw(amount);
}
}
这里Expense类中的Account属性我设计成了IAccount接口.原因是因为用于消费的帐户有很多种,比如CreditCard(信用卡)\Cash(现金)\DebitCard(借记卡)等等各种帐户:
public interface IAccount
{
string Name
{
get;
set;
}
decimal Amount
{
get;
set;
}
Individual Holder
{
get;
set;
}
Currncy Currncy
{
get;
set;
}
void Draw(decimal amount);
void Deposit(decimal amount);
void Transfer(IAccount account, decimal amount);
}
CreditCard类
public class CreditCard : IAccount
{
private Institution bank;
private string name;
private string number;
private Individual holder;
private decimal overdraft;
private decimal cashLimit;
private decimal interestRate;
private int repaymentDay;
private int billDay;
private DateTime startDate;
public DateTime StartDate
{
get { return startDate; }
set { startDate = value; }
}
private decimal amount;
private DateTime expiryMonth;
private Currncy currency;
#region IAccount 成员
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public decimal Amount
{
get
{
return amount;
}
set
{
amount = value;
}
}
public Individual Holder
{
get
{
return holder;
}
set
{
holder = value;
}
}
public Currncy Currncy
{
get
{
return currency;
}
set
{
currency = value;
}
}
public void Draw(decimal amount)
{
this.amount = this.amount - amount;
}
public void Deposit(decimal amount)
{
this.amount = this.amount + amount; ;
}
public void Transfer(IAccount account, decimal amount)
{
this.amount = this.amount - amount;
account.Deposit(amount);
}
#endregion
}
用这几个类来表达我想实现的功能是没有问题的,但是确没办法映射到关系型数据库.各个帐户类倒没有问题,现在主要的问题存在于Expense类的持久化.其中IAccount属性没办法用数据表表示,或都说很难表示.
请各位大侠帮忙解决@
相关推荐
掌握Go语言的柔性魔法:接口类型的合理运用
在Go语言的多彩世界中,接口类型以其独特的灵活性和强大的抽象能力,成为了构建高效、可维护代码的基石。本文将深入探讨Go语言接口类型的合理运用,从基础概念到高级应用,带你领略接口的魔力,解锁编程的新境界。Go语言的接口类型是其设计的核心之一,它允许我们以一种抽象的方式定义行为集合,而具体的实现则可以延迟到需要的时候。这种设计不仅提高了代码的可读性和可维护性,还极大地增强了代码的可扩展性。接口在Go语言中是一种类型,它定义了一组方法签名的集合。任何实现了这些方法的类型都被认为是实现了该接口。接口的声明不包含方法
mongodb-linux-x86_64-ubuntu2004-8.0.13.tgz
mongodb-linux-x86_64-ubuntu2004-8.0.13
chromedriver-linux64-159.0.8135.0(Canary).zip
chromedriver-linux64-159.0.8135.0(Canary).zip
三相四桥臂电压不对称跌落补偿动态电压恢复器DVR(Simulink仿真实现)
内容概要:本文围绕三相四桥臂动态电压恢复器(DVR)在电压不对称跌落情况下的补偿能力展开,重点介绍了基于Simulink平台构建的仿真模型,用于研究和验证DVR对电网电压不平衡的动态补偿性能。系统采用三相四桥臂逆变器结构,利用其独立的中性线控制能力有效处理零序分量,结合多准PR(Proportional Resonant)控制策略实现对正负序电压分量的精确跟踪与快速响应,从而提升在不平衡负载或电网故障条件下DVR的补偿精度与系统稳定性。文中提供了完整的仿真模型及相关参考文献,涵盖控制算法设计、系统建模与参数整定等关键技术环节,适用于复杂电能质量问题的研究与教学演示。; 适合人群:电气工程、电力电子与电力系统相关专业的研究生、科研人员及从事电能质量治理的技术工程师;具备一定的电路理论、自动控制原理和Simulink仿真基础者更佳。; 使用场景及目标:①研究动态电压恢复器在三相电压不对称跌落工况下的补偿机制与控制策略;②掌握三相四桥臂逆变器在不平衡条件下的建模与控制方法;③深入理解多准PR控制器在正负序分离控制中的应用,提升对电能质量调节装置的设计与仿真能力; 阅读建议:建议结合提供的参考文献与说明文档,逐步搭建并调试Simulink仿真模型,重点关注控制器参数设计与系统动态响应特性,通过设置不同类型的电压跌落场景(如单相跌落、两相短路等)来验证控制策略的有效性与鲁棒性。
【MIMO无线编码】在瑞利衰落信道中比较2x2和4x4的BPSK调制系统(Matlab代码实现)
内容概要:本文通过Matlab代码实现,在瑞利衰落信道环境下对2x2和4x4 MIMO系统采用BPSK调制的性能进行仿真与比较,重点分析不同天线配置下的误码率(BER)表现,旨在探讨MIMO系统中天线数量增加对无线通信可靠性和传输性能的影响。研究涵盖了信道建模、信号调制解调、接收端检测算法等关键环节,并通过蒙特卡洛仿真获得统计结果,直观展示了MIMO技术在对抗多径衰落方面的优势。; 适合人群:具备通信原理基础知识和Matlab编程能力的高校学生、科研人员及从事无线通信系统设计的工程技术人员。; 使用场景及目标:①理解MIMO系统在瑞利衰落信道中的工作原理与性能评估方法;②掌握BPSK调制解调及典型MIMO检测技术的Matlab实现;③通过仿真对比不同规模MIMO系统的性能差异,为系统设计提供参考依据。; 阅读建议:建议读者结合Matlab代码逐段运行并观察仿真结果,深入理解各模块功能,同时可尝试修改参数(如信噪比范围、仿真次数、天线数目)以探究其对系统性能的影响,从而加深对MIMO无线编码技术的认知。


LINQ
