zoukankan      html  css  js  c++  java
  • PHP工厂模式

    工厂模式的意思其实就是提供获取某个对象实例的一个接口,同时使调用代码避免确定实例化基类的步骤,实际上就是建立一个统一的类实例化的函数接口,完事统一调用,统一控制,它是PHP中常用的一种设计模式,一般会配合单例模式一起使用,来加载php类库中的类

    //工厂模式 提供获取某个对象实例的一个接口,同时使调用代码避免确定实例化基类的步骤
    //字符串类
    class String {
    	public function write() {}
    }
    //Json类
    class Json {
    	public function getJsonData() {}
    }
    //xml类
    class Xml {
    	public function buildXml() {}
    }
    //工厂类
    class Factory {
    	public static function create($class) {
    		return new $class;
    	}
    }
    Factory::create("Json"); //获取Json对象
    

      我们来考虑以下场景,如果项目中,我们通过一个类创建对象,在快完成或者已经完成,要扩展功能的时候,发现原来的类的类名不是很合适或者发现类需要添加构造函数参数才能实现功能扩展,在这种情况下,大家就可以感受到“高内聚低耦合”的博大精深,我们可以尝试使用工厂模式解决这个问题

    interface Transport{
        public function go();
     
    }
     
    class Bus implements Transport{
        public function go(){
            echo "bus每一站都要停";
        }
    }
     
    class Car implements Transport{
        public function go(){
            echo "car跑的飞快";
        }
    }
     
    class Bike implements Transport{
        public function go(){
            echo "bike比较慢";
        }
    }
     
    class transFactory{
        public static function factory($transport)
        {
            
            switch ($transport) {
                case 'bus':
                    return new Bus();
                    break;
     
                case 'car':
                    return new Car();
                    break;
                case 'bike':
                    return new Bike();
                    break;
            }
        }
    }
     
    $transport=transFactory::factory('car');
    
    $transport->go();
    

      

  • 相关阅读:
    良心之作送你几个Xsheel使用小技巧
    面试问Redis集群,被虐的不行了......
    一文搞定Redis五大数据类型及应用场景
    写给大忙人的Redis主从复制,花费五分钟让你面试不尴尬
    Redis删除策略和逐出策略
    一文带你了解Redis持久化完整版本
    MySQL--创建计算字段
    MySQL语句与正则表达式
    SQLZOO练习二--SELECT from Nobel Tutorial
    SQLZOO练习(一)SELECT BASICS,SELECT form world
  • 原文地址:https://www.cnblogs.com/zh718594493/p/12104022.html
Copyright © 2011-2022 走看看