为了保护封装,同时提供可访问性,OOP设计建议使用获取方法(getters)和设置方法(setters),也分别称为存取方法(accessors)和修该方法(mutators)。不建议直接访问一个类,通过赋值来得到或修改属性,这些工作完全可以有获取方法/设置方法来完成。一般地,使用获取设置方法必须适度;滥用会破坏封装;
举例说明:
<?php
/**
* Create by PhpStorm
* Author : wqzbxh
* Date : 2019/11/28
* time :22:10
*/
Class GetSet
{
private $dataWareHouse;
function __construct()
{
$this->setter(200);
$got = $this->getter();
echo $got;
}
private function getter()
{
return $this->dataWareHouse;
}
private function setter($setValue)
{
$this->dataWareHouse=$setValue;
}
}
$woker = new GetSet();
获取/设置方法时私有的,所以这个访问是封装的,另外,在这实现中,设置方法放在类中,所以他当于一个数据容器。
对于面向对象系统中的数据处理,Allen Holub 曾给出以下建议:
不要直接请求完成一个工作所需要的信息,而应当请求拥有这个信息的对象为你完成工作;
在GetSet类中的例子中,通过实例化类:
$woker = new GetSet();
就做到了这一点。他没有暴漏实现细节。不过单独看来GetSet类好像没有太大用户,因为想要指定一个值,唯一的途径就是在类中硬编码实现。嘿嘿
从某种程度上来说,设计模式的目的时建立对象之间的通信链路,很多所谓的OOP并没有正确的使用获取设置方法,允许公开的访问获取方法和设置方法只会破坏封装。
保持封装时保持对象类之间的通信的过程时设计模式的一个工作。要找出一种方法来通信,同时不破坏封装,这可能很困难(我我自己在很多实际开发中就是无限破坏,今后改正),,所以设计模式就相当于一种“秘诀”,可以指出如何使用可通信的类建立一个程序。