php設計模式之建立型---工廠(簡單工廠)

序言

顧名思義,此篇介紹工廠模式中的簡單工廠,工廠模式屬於建立型模式,而工廠模式分爲簡單工廠,靜態工廠,抽象工廠,由淺到深,上篇介紹了最基本的單例,而簡單工廠也是工廠模式裏最基本的。php

簡單工廠概述

優勢:實例化對象,根據參數獲取對應的對象,避免直接實例化,下降耦合。
缺點:需知全部的類型,不符合設計模式的開閉原則,當類型增長,工廠也須要修改。
複製代碼

簡單工廠結構

Api: 用於構建用戶功能,抽象接口,只負責抽象,不負責實現。
AchieveApi: 功能對象,用於實現接口。
Factory: 用於生產(建立)功能對象。
複製代碼

正文

仍是以故事的形式來敘述。 昨天是端午節日,放假了,小陳要回家,回家要用到車,可是回家的方式有不少種,不知道該開車回,仍是坐車,仍是騎自行車回。設計模式

一、功能接口ide

class Api {
            // 要回家
            public function goHome(string $message){}
        }
複製代碼

二、實現功能的工具工具

// 開車
        class Car implements Api {
            public function goHome(string $message) {
                echo "開車回";
            }
        }
        
        // 坐車
        class ByCar implements Api {
            public function goHome(string $message) {
                echo "坐車回";
            }
        }
        
        // 騎車
        class RideCar implements Api {
            public function goHome(string $message) {
                echo "騎車回";
            }
        }
複製代碼

三、構建工廠測試

class EasyFactory {
        public static function getFactory(int type) {
            // 約定方法
            switch(type) {
                case 1:
                    return new Car();
                    break;
                case 2:
                    return new ByCar();
                    break;
                case 3:
                    return RideCar();
                    break;
                default:
                    die('超了');
            }
        }
    }
複製代碼

四、測試spa

$xiaochen1 = EasyFactory::getFactory(1); // 開車
    $xiaochen1->goHome();
    $xiaochen2 = EasyFactory::getFactory(2); // 坐車
    $xiaochen2->goHome();
    $xiaochen2 = EasyFactory::getFactory(3); // 騎車
    $xiaochen2->goHome();
複製代碼

總結

以上方法就是簡單的工廠模式,在使用時直接進行調用,不須要知道建立的邏輯,想開車回,直接去開就能夠,下次本身沒時間,家裏人也直接能開,不用管車是怎麼造出來的(前提是知道有個車),通常簡單工廠是用來隔離實現,讓外部只能經過特定的接口或者方法來操做。設計

相關文章
相關標籤/搜索