不知道从哪里开始,所以我只是要进去。让我们说我试图用OOP来代表一个经济体。我提出的基本设计是:
class Person{
int $money; // Money someone has in wallet/purse
int $bank_account_id;
function getAmountOfMoney()
function addMoney($amountToAdd)
function subtractMoney($amountToSubtract)
}
class BankAccount{
int $money; // Money in Bank Account
int $interest_per_year;
function giveInterest()
function depositMoney() // Calls $person->subtractMoney()
function withdrawMoney() // Calls $person->addMoney()
}
这里有设计缺陷吗?
答案 0 :(得分:2)
看看你的开始我会建议你应该尽量让你的课程承担一个责任。值得思考的是BankAccount负责计算利息吗?可能不是。
如果您想学习OO开发的良好原则,我建议您查看S.O.L.I.D:http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod(+ 100其他链接)
答案 1 :(得分:1)
我注意到的一件事是,一个人和一个银行账户不是一对一的关系。例如,储蓄和开帐户就可以了。或者有些人会有多家银行,或者我知道我的父母,同一家银行的几个账户。将$bank_account_id
存储在Person
中是我所指的。
最好有一个包含该人拥有的每个帐户的数组。
另外,如果您的人物有ID,那么您应该也可以在BankAccount
中使用。
与depositMoney()
和withdrawMoney()
类似的是,当Person
访问Person
而BankAccount
访问{{1}}时,他们应该在{{1}}上工作反过来说。
基本上,你将这两个类之间的关系与表现现实生活(和实际)用法的方式有些相反。