設計模式的命名啊什麼的,我基本上已經忘記得差不多了,我就把我現在表述的這個東西叫做按需加載吧。
需求:
1.我希望有一個設定檔讀寫類,不需要修改原本這個設定檔讀寫類別就可以實作擴充;
2.這個擴充是例如我原本的設定是txt格式的,但現在我的設定類別是php或是xml等,也可能是json
3.呼叫介面統一,不管是什麼類型的配置文件,我調用同樣的一個文件配置讀寫類就可以了,防止後續的程式碼很難維護。
那麼:
1.首先,想到的是定義一個抽象類,不斷的繼承,透過繼承不用修改這個設定檔讀寫類別;
2.但是,我就不能統一使用這個設定檔讀取類別了,我呼叫的是我繼承後的這個類別;
##實作想法:
#好了,廢話了那麼多,我在這裡就來說一下我的實現思路,其實整個思路還是挺簡單的;/** * 定义配置文件读写类,所有的配置文件读写调用此类就可以了,统一接口 */ class Config { // 读 public function read($file,$type = 'txt') { $instance = $this->getInstance($type); $instance->read($file); } // 写 public function write($file,$type = 'txt') { $instance = $this->getInstance($type); $instance->read($file); } // 删 public function delete($file,$type = 'txt') { $instance = $this->getInstance($type); $instance->read($file); } // 获取实际操作对象实例 public function getInstance($type = 'txt') { $class_name = ucfirst($type).'Config'; // 根据文件格式实例化具体的操作类 if(class_exists($class_name)) { $instance = new $class_name; } else { throw new Exception('未定义'.$class_name); } if(is_subclass_of($instance,'BaseConfig') !== 1) { throw new Exception('配置文件读写类必须继承BaseConfig'); } return $instance; } } // 定义一个基础操作接口类,后续的文件读写必须继承这个规范 abstract class BaseConfig { abstract protected function read($file) {} abstract protected function write($file) {} abstract protected function delete($file) {} } // Text配置文件读写类 TxtConfig extends BaseConfig { public function read($file) {} public function write($file) {} public function delete($file) {} } // 其他配置文件读写类。。。以上的程式碼我沒測試過,我表達的僅僅是一個思想,當然,基於這種思想還可以設計出更加靈活,可以增加一個數組配置來定義不同的文件分別採用哪個類來讀寫,時間關係,這個問題後續有時間再更新。 更多php相關知識,請造訪
php教學!
以上是php如何按需載入方式來增加程式的彈性度的詳細內容。更多資訊請關注PHP中文網其他相關文章!