我有一个应用程序,其中许多对象都扩展一个抽象类,该类定义了类似的方法create()
edit()
retrieve()
and delete()
。由于每个子类对这些函数都使用相同的逻辑,因此抽象类定义了默认行为,并且在需要增强的少数情况下,子类可以覆盖或使用我内置的钩子。
现在我遇到的情况是一些子类需要变得不可变,这意味着它们不应该edit()
or delete()
方法。在我看来,这种需求听起来像是一个名为类似的界面的工作immutable
不可变类可以实现它。问题是接口不会阻止方法被调用,它们只是强制方法的存在。所以这显然是行不通的。
制作两个父类,一个用于可变对象,一个用于不可变对象是丑陋的,并且可能会在维护过程中出现问题。我可以让不可变对象用一个什么都不做的空方法覆盖有问题的方法,但这看起来也很混乱,而且好像我当时没有做正确的 OOP。
那么,您建议允许大量类全部继承一组方法,但其中一些类不继承所有方法的最佳方法是什么? (所讨论的应用程序是用 php 编写的,但任何语言的通用 OOP 技术仍然会有所帮助)。
创建一个不可变基类作为基类的子类。
不可变基应该实现final http://php.net/manual/en/language.oop5.final.php重写 edit() 和 delete() ,它们不执行任何操作或引发错误。
Final,保证所有不可变子项都无法编辑或删除
该策略的好处
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)