PHP封裝二:獲取方法和設置方法

爲了保護封裝,同時提供可訪問性,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並沒有正確的使用獲取設置方法,允許公開的訪問獲取方法和設置方法只會破壞封裝。

 

保持封裝時保持對象類之間的通信的過程時設計模式的一個工作。要找出一種方法來通信,同時不破壞封裝,這可能很困難(我我自己在很多實際開發中就是無限破壞,今後改正),,所以設計模式就相當於一種“祕訣”,可以指出如何使用可通信的類建立一個程序。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章