有一种纯粹的面向对象的属性可以帮助轻松通过雷达下的例子,但object-capability模型使明确和中心。链接文档(“从对象到功能”(FOtC))详细讨论了该主题,但是(简而言之)能力的一点是,对象影响其世界的能力仅限于它所引用的对象。开始时可能看起来并不重要,但在保护访问权限方面非常重要,并影响其他类的方法中可用的类的方法。
选项A)给帐户John访问帐户Betty,而选项B)给Betty访问帐户John;既不可取。使用选项C),账户访问由银行调解,因此只有银行才能窃取或伪造资金。选项D)与其他三种不同:其他显示消息正在发送但不是实现,而D)是一种方法实现,它不显示它处理的消息,也不显示它处理它的类。 D)可以很容易地实施前三个选项中的任何一个。
FOTC有包括一些其他类的解决方案的开头:
- 封口& unsealers,
- 皮包,这是有点像,它们包含基金账户,但不一定有一个所有者。
- 薄荷糖,这是可以与正余额
甲薄荷具有缩放器/ unsealer对,它赋予到钱包每当薄荷创建一个创建钱包的唯一的东西。钱包监督平衡变化;他们在减少余额时使用封口机,并且将售货机从一个钱包转移到另一个钱包。钱包可以产生空钱包。由于使用密封剂密封剂,一个钱包只能与由同一薄荷创建的其他钱包一起使用。有人不能自己写钱包来伪钞;只有能够获得薄荷的物体才能创造收益。通过限制访问薄荷糖来防止伪造。
任何有钱的人都可以通过产生一个空钱包并将钱从第一个钱包转入其中来启动交易。然后可以将临时钱包发送给收款人,收款人可以将钱从临时钱包转移到其拥有的其他钱包。通过限制对钱包的访问来防止盗窃。例如,银行代表客户在账户中持有钱包。由于银行只能访问其客户账户和临时钱包的钱包,因此只有客户的银行可以从客户那里窃取(虽然请注意,在银行账户之间的转账中,有两个客户可能成为受害者,因此有两个潜在客户盗贼)。
该系统缺少一些重要的细节,例如货币当局(持有一个或多个造币厂的参考)来创造金钱。
总而言之,货币交易安全地执行起来很棘手,因此可能不是学习OOP基础知识的最好例子。
这个问题似乎是题外话题,因为它是关于代码审查,并适合代码review.stackexchange.com – 2014-11-10 04:51:43