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();
复制代码

总结

以上方法就是简单的工厂模式,在使用时直接进行调用,不须要知道建立的逻辑,想开车回,直接去开就能够,下次本身没时间,家里人也直接能开,不用管车是怎么造出来的(前提是知道有个车),通常简单工厂是用来隔离实现,让外部只能经过特定的接口或者方法来操做。设计

相关文章
相关标签/搜索