摘要:面向對象編程則將職責從客戶端代碼中轉移到專門的對象中,盡量減少相互依賴。實例說明面向對象和面向過程首先,面對這樣一個需求,寫一個讀取文件配置工具。
面向對象和面向過程 面向對象和過程式編程的核心區別就是職責分配
過程式代碼表現的行為就是一系列命令和方法的連續調用,控制代碼根據不同的條件執行不同的職責代碼。這種自頂向下的控制方式導致了重復和相互依賴的代碼遍布于整個項目。
面向對象編程則將職責從客戶端代碼中轉移到專門的對象中,盡量減少相互依賴。
實例說明面向對象和面向過程首先,面對這樣一個需求,寫一個讀取文件配置工具。
配置文件的格式如下
key:value
此時需求明確,實現也簡單,兩個函數搞定
此時代碼較為緊湊且易于維護,但生活不可能一直都是一帆風順,現在需求變更,需要新增一個支持xml文件讀取、寫入的功能。
此時我們假設,加入if判斷xml后綴文件來執行xml的讀取、寫入的方法?這樣read和write函數都要判斷條件,我們需要改兩處地方,如下。
function readParams( $sourceFile ) { $params = []; if (preg_match( "/.xml$/i", $sourceFile )) { // 執行xml方式的讀取文件配置方法 } else { // 執行txt方式的讀取文件配置方法 } return $params; } function writeParams( $params, $sourceFile ) { if ( preg_match( "/.txt$/i", $sourceFile )) { // 執行寫xml的寫文件配置方法 } else { // 執行寫txt的寫文件配置方法 } }從上面的修改就可以看出,假如需要支持更多的文件格式,就需要在read和write兩處方法內分別添加來保持數據處理的一致性
面向對象方式//定義一個抽象的讀寫類 abstract class ParamHandler { protected $sourceFile; protected $params = []; function __construct( $source ) { $this->sourceFile = $source; } function addParams( $key, $val ) { $this->params[$key] = $val; } function getAllParams() { return $this->params; } //該處驗證傳入的文件類型,然后返回相應操作的對象 static function getInstance( $filename ) { if ( preg_match("/.xml$/i", $filename) ) { return new XmlParseHandler( $filename ); } return new TextParseHandler( $filename ); } abstract function write(); abstract function read(); } //定義具體xml的實現子類 class XmlParseHandler extends ParamHandler { function write() { //實現xml的寫方法 } function read() { //實現xml的讀方法 } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21315.html
摘要:以實現自己熟悉的東西為導向比如我們做后端開發,首先是常用的循環迭代條件判斷增刪改成。它是由實現的,不保證元素的順序,也就是說所說元素插入的順序與輸出的順序不一致。 下面是我直播的文字版,直播地址:https://segmentfault.com/l/15...代碼:https://github.com/zhoumengka...整個項目我們我又細分了6個版本來演進,希望更加便于大家對比...
摘要:以實現自己熟悉的東西為導向比如我們做后端開發,首先是常用的循環迭代條件判斷增刪改成。它是由實現的,不保證元素的順序,也就是說所說元素插入的順序與輸出的順序不一致。 下面是我直播的文字版,直播地址:https://segmentfault.com/l/15...代碼:https://github.com/zhoumengka...整個項目我們我又細分了6個版本來演進,希望更加便于大家對比...
摘要:面向對象三大特征繼承性多態性封裝性接口。第五階段封裝一個屬于自己的框架框架封裝基礎事件流冒泡捕獲事件對象事件框架選擇框架。核心模塊和對象全局對象,,,事件驅動,事件發射器加密解密,路徑操作,序列化和反序列化文件流操作服務端與客戶端。 第一階段: HTML+CSS:HTML進階、CSS進階、div+css布局、HTML+css整站開發、 JavaScript基礎:Js基礎教程、js內置對...
摘要:面向對象三大特征繼承性多態性封裝性接口。第五階段封裝一個屬于自己的框架框架封裝基礎事件流冒泡捕獲事件對象事件框架選擇框架。核心模塊和對象全局對象,,,事件驅動,事件發射器加密解密,路徑操作,序列化和反序列化文件流操作服務端與客戶端。 第一階段: HTML+CSS:HTML進階、CSS進階、div+css布局、HTML+css整站開發、 JavaScript基礎:Js基礎教程、js內置對...
閱讀 1148·2021-09-22 15:43
閱讀 2345·2021-09-22 15:32
閱讀 4455·2021-09-22 15:11
閱讀 2188·2019-08-30 15:55
閱讀 2564·2019-08-30 15:54
閱讀 984·2019-08-30 15:44
閱讀 1095·2019-08-29 13:26
閱讀 794·2019-08-29 12:54