oop – 对象内的依赖关系
发布时间:2020-12-13 20:11:46 所属栏目:百科 来源:网络整理
导读:我有这个代码 class Duck { protected $strVocabulary; public function Learn() { $this-strVocabulary = 'quack'; } public function Quack() { echo $this-strVocabulary; }} 代码是用PHP编写的,但问题不依赖于PHP. 在它知道Quack之前,鸭子必须学习. 我的
我有这个代码
class Duck { protected $strVocabulary; public function Learn() { $this->strVocabulary = 'quack'; } public function Quack() { echo $this->strVocabulary; } } 代码是用PHP编写的,但问题不依赖于PHP. 我的问题是:如何在调用Learn()之后才能调用Quack()?
不,这不违反任何OOP原则.
一个突出的例子是一个对象,其行为取决于是否建立了连接(例如,函数doNetworkStuff()取决于openConnection()). 在Java中,甚至有一个typestate checker,它在编译时执行这样的检查(Duck是否已经是Quack()).我经常有这样的依赖作为接口的前提条件,并使用转发类,其唯一目的是协议并检查它转发到的对象的状态,即协议在对象上调用了哪些函数,并抛出异常(例如InvalidStateException)不符合先决条件. 处理此问题的设计模式是state:它允许对象在其内部状态更改时更改其行为.该对象似乎会更改其类. design pattern book from the Gang of Four还使用上面建立或未建立的网络连接示例. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |