Heim  >  Artikel  >  Backend-Entwicklung  >  (5) Objektorientierte Designprinzipien 1 – Allgemeiner Überblick und Prinzip der Einzelverantwortung

(5) Objektorientierte Designprinzipien 1 – Allgemeiner Überblick und Prinzip der Einzelverantwortung

WBOY
WBOYOriginal
2016-08-10 08:48:40962Durchsuche

1. Allgemeine Gliederung:

1. Die fünf Prinzipien der Objektorientierung: Einzelverantwortungsprinzip, Schnittstellenisolationsprinzip, Offen-Geschlossen-Prinzip, Ersetzungsprinzip und Abhängigkeitsinversionsprinzip.

2. Prinzip der Einzelverantwortung:

1. Was eine Klasse betrifft, gibt es nur einen Grund für ihre Änderung: das Prinzip der Einzelverantwortung.

2. Eine einzige Verantwortung hat zwei Bedeutungen:

a. Vermeiden Sie die Verteilung der gleichen Verantwortlichkeiten auf verschiedene Klassen

b. Vermeiden Sie, dass eine Klasse zu viele Verantwortlichkeiten übernimmt

3 Der Grund für das Verantwortungsprinzip: Reduzieren Sie die Kopplung zwischen Klassen und verbessern Sie die Wiederverwendbarkeit von Klassen.

3. Factory-Muster:

1. Das Factory-Muster ermöglicht die Instanziierung von Objekten, wenn Code ausgeführt wird. Kann Objekte „produzieren“.

2. Beispiel:

<?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);

Urheberrechtserklärung: Dieser Artikel ist ein Originalartikel des Bloggers und darf nicht ohne dessen Erlaubnis reproduziert werden.

Das Obige hat (5) Objektorientiertes Designprinzip 1 eingeführt – den allgemeinen Überblick und das Prinzip der Einzelverantwortung, einschließlich Aspekten des Inhalts. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn