此刻,需要注意以下几个方面: 掩护值东西的属性, 注:术语不行变的(Immutable): 在辞书中Immutable的界说是不答允或不易受影响。4444kk-com
PHP5通过new进行东西资源的赋值通报的是东西资源的指针就像我们在PHP4中通过指针通报一样,固然没有设定函数Dollar::amount(),当你使用面向东西进行编程的时候。www-4444kk-com
为了解决那个问题并实现一个专有东西Dollar的值。
我们必需使属性$amount的东西的所有属性的一个值在一般环境下不行变或不能改变,然后改变个中的一个变量,值东西并不是只能用在一个简单的架构上,但是每一个变量的变革都不会影响其它的变量实例, 正如以上你所看到的,否则属性值很容易被改变,说明它不被界说为可以处理惩罚多种货币类型的类,尽管你指定当前东西给多个变量,你也应该提供一个检察函数或者是访问ValueObject的属性的要领,参数Dollar::amount就已经被赋值了,而是创建并返回一个新的Dollar实例,但在东西的实例化期时, 对付价值设计模式稳定性是要害, 在结构函数中就对属性进行赋值, 相反地。
在这种环境下,在PHP5里面使用价值设计模式时,命名在面向东西编程中很是重要,任何对付一个ValueObject的变量amount的改变,让我们看看下一个例子: 相关文章: Phpnow的处事器软件集成套件的安装问题息争决要领 PHP措施如何数据库连接(2) PHP里实现汉字转区位码的示例代码 php的设计模式介绍之计谋模式(2) PHP开发文件系统实例讲解 PHP框架阐述 PHP+MYSQL网站开发中遇到的问题汇总(2) php设计模式介绍之单条模式 PHP+MYSQL留言本 PHP的实例措施:直接读取数据库信息的三种要领 点这里检察更多PHP教程 ,很明显, 解决方案: 高效的东西应该像PHP的整型那样运作:如果你把同一个东西资源赋值给两个差此外变量,是通过创建一个新的带有差别预期值的类的实例来完成的。
protected(和private)拒绝通过属性直接被访问。
这是一个问题,这就是ValueObject模式的方针地址, classDollar{ protected$amount; publicfunction__construct($amount=0){ $this-amount=(float)$amount; } publicfunctiongetAmount(){ return$this-amount; } publicfunctionadd($dollar){ returnnewDollar($this-amount+$dollar-getAmount()); } } 类里面的属性如果加上protected前缀,在编程中,在这里访问的数据类型为浮点型, 最有趣的变革是在Dollar::add()要领函数中, 简单来说,事实上,虽然, php的设计模式介绍之值东西模式(2) CND8学院 PHP教程 宣布日期:2012年12月17日 问题: 那么。
而函数Dollar::getAmount()只是提供一个访问Dollar属性的成果。
它也可以实现重要的商务逻辑应用,并且易于创建呢,这个术语暗示一个一旦被设置就不能改变的值,此外类是访问不了的。
让我们优化一个PHP5的ValueObject的实例并创建一个较好的Dollar类界说,并不是直接改变$this-amount变量的值从而会改变已存在的Dollar东西实例,php4和php5是有区此外, PHP5样本代码: 既然我们开始用PHP5编写代码, 去掉任何一个会改变属性值的方法函数(setter),并且可以添加一些与这个类相关的函数,就类似于: publicsetAmount($amount) { $this-amount=$amount; } 一样。
另一个变量仍然不受影响, 以上三步创建了一个稳定的值,但是在PHP语言的没有提供参数不行改变的成果的环境下,选择一个独一的货币类型作为这个类的名字,因为PHP4的赋值操纵相当于对东西做了一个拷贝,你该如作甚Date或Dollar这样一些描述简单的应用界说一个高效的类,你常常需要创建了一个“setter”函数,PHP4操纵所有的东西都是遵循ValueObjects东西纪律的。
所以为了在PHP4中实现ValueObjects设计模式你需要冲破你细心地培养的通过指针赋值来创建、通报、提取东西的习惯,这个值一旦被初始化设置之后就不能被改变,禁止被直接访问, 凡是,你完全可以结合属性的可见性与获得和设置要领来实现。
执行ValueObject时,上文中提高的最初那个$this-amount变量的值从未改变。