php设计模式:值对象模式

开始看demo没看明白

经过反复测试,确实有道理

先看几个原则,不理解可以多测试例子,帮助立即

  对于价值设计模式不变性是关键,任何对于一个Value Object的变量amount的改变,是通过创建一个新的带有不同预期值的类的实例来完成的。上文中提高的最初那个$this->amount变量的值从未改变。
1.保护值对象的属性,禁止被直接访问。
2.在构造函数中就对属性进行赋值。
3.去掉任何一个会改变属性值的方式函数(setter),否则属性值很容易被改变。 

<?php 

class Dollar { 

    protected $amount;


    public function __construct($amount = 0) {


        $this->amount = (float) $amount;
    }


    public function getAmount() {


        return $this->amount;
    }


    public function add($dollar) {


        return new Dollar($this->amount + $dollar->getAmount());
    } 
}
//$d0 = new Dollar(100);
//$d = new Dollar();
// 
//$d =$d->add($d0);
//$d =$d->add($d0);
//$d =$d->add($d0);
//echo $d->getAmount();
 $d0 = new Dollar(100);


给一个很简单的例子,帮助大家理值对象模式,明天弄一个复杂一点的,进一步理解和学习!
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值