【发布时间】:2015-06-22 13:26:40
【问题描述】:
我知道大多数 OOP 语言(如果不是全部)中的私有可见性以类为基础定义隐私,即同一类的不同实例可以访问彼此的私有属性/方法。
我想防止这种情况发生,并且我想知道最好的设计/实现是什么,以便不会对性能产生负面影响。
例如,我知道我可以实现 AOP 并使用注释,但这会导致性能下降,因为语言引擎必须创建类的反射并检查注释。所以,基本上,我的问题是,避免同一类的实例访问彼此的私有方法/属性的最佳方法是什么?
例子:
class Product
{
private $_prize;
public function __construct($prize)
{
$this->_prize = $prize;
}
public function calculateDiscount(Product $extraProduct)
{
$extraProduct->_prize = 0; //How to avoid this?
}
}
$productA = new Product(10);
$productB = new Product(25);
$productA->calculateDiscount($productB);
【问题讨论】:
-
如果是这样,那你为什么需要多个实例?
-
我不完全理解你的问题,但似乎singleton pattern 会有所帮助。
-
我也想过单例,但这意味着他只会使用 1 个对象,这就是为什么我问他为什么需要多个实例
-
因为产品A有奖品,但是如果和产品B一起卖,就打折了。我相信拥有两种产品的 Cart 对象将是最好的设计,但我想知道如何避免这种事情