一.總綱:
1.物件導向的五大原則:單一職責原則、介面隔離原則、開放-封閉原則、替換原則、依賴倒置原則。
二.單一職責原則:
1. 就一個類別而言只有一個造成它變化的原因即為:單一職責原則。
2.單一職責有兩個意義:
a. 避免將相同的職責分散到不同的類別
b. 避免一個類別承擔太多的職責
3. 遵循單一職責原則的原因:減少類別之間的耦合原因:減少類別之間的耦合原因提高類的複用性。
三.工廠模式:
1. 工廠模式允許在程式碼執行時實例化物件。能夠‘生產’對象。
2. 範例:
<?php /* * 单一职责原则 */ interface Db_Adapter{ /* * 数据库连接 * @param $config数据库配置 * @return resource */ public function connect($config); /* * 执行数据库查询 * @param string $query 数据库查询sql字符串 * @param mixed $handld 连接对象 * @return resource */ public function query($query,$handle); } class Db_Adapter_Mysql implements Db_Adapter{ private $_dbLink; /* * 数据库连接 * * @param $config 数据库配置 * @throws Db_Exception * @return resource */ public function connect($config){ if ($this->_dbLink = @mysql_connect($config->host.(empty($config->port) ? '' : ':'.$config->port), $config->user,$config->password,true)){ if (@mysql_select_db($config->database,$this->_dbLink)){ if ( $config->charset){ mysql_query("SET NAMES '{$config->charset}'",$this->_dbLink); } return $this->_dbLink; } } /*数据库异常*/ throw new Db_Exception(@mysql_error($this->_dbLink)); //这一句报了很多错 } /* * 执行数据库查询 * * @param string $query 数据库查询sql字符串 * @param mixed $handle 连接对象 * @return resource */ public function query($query,$handle){ $resource = ""; if ($resource == @mysql_query($query,$handle)){ return $resource; } } } class Db_Adapter_sqlite implements Db_Adapter{ private $_dbLink; //数据库连接字段标记 /* * 数据库连接函数 * * @param $config数据库配置 * @throws DB_exception * @return resource */ public function connect($config){ if ($this->_dbLink = @mysql_connect($config->host. (empty($config->port) ? '' : ':'.$config->port), $config->user,$config->password,true)){ if (@mysql_select_db($config->database, $this->_dbLink)){ if ($config->charset){ mysql_query("SET NAMES '{$config->charset}'",$this->_dbLink); } return $this->_dbLink; } } /*数据库异常*/ throw new Db_exception(@mysql_error($this->dbLink)); } /* * 执行数据库查询 * * @param string $query 数据库查询sql字符串 * @param mixed $handle 连接对象 * @return resource */ public function query($query,$handle){ $resource = ""; if ($resource == @mysql_query($query,$handle)){ return $resource; } } } $testDb = new Db_Adapter_Mysql(); $config = array( //这里写数据库配置 'host'=>'localhost', ); $testDb->connect($config); $testDb->query($sql,$handle);
版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。
以上就介紹了(五)物件導向的設計原則1---總綱及單一職責原則,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。