• 工厂模式


    概念

    工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。笼统的说,输入不同的要求就实例化不同的对象。就是一个类所依赖的外部事物的实例,都可以被一个或多个 “工厂” 创建的这样一种开发模式,就是 “工厂模式”。其实根据实际情况,像工厂做的所有的产品是有共同的特点,不同的只是产品的一些外观,但这些都是可调整的。

    运用场景

    一般在框架中运用比较多,比如laravel中操作数据库,有Eloquent ORM,queryBuilder。

    实现

    要定义一个抽象基类或一个接口,让子类去实现方法。定义一个工厂类实例化所有的子类。

    interface factoryInterface
    {
        public function people();
    }
    
    class  Girl implements factoryInterface
    {
    
        public function people()
        {
            // TODO: Implement people() method.
            echo '这是girl做的事';
        }
    }
    //在此类中可以定义boy独有的方法
    class Boy implements factoryInterface
    {
        public function people()
        {
            // TODO: Implement people() method.
            echo '这是boy做的事';
        }
    }
    
    //工厂类用于实例化所有的子类
    class  Factory
    {
        protected $type;
    
        function __construct($type)
        {
            $this->type = $type;
        }
    
        public function select()
        {
            switch (strtolower($this->type)) {
                case 'girl':
                    return new  Girl();
                    break;
                case 'boy':
                    return new Boy();
                default:
                    echo '什么也没有';
            }
        }
    }
    $getObject = (new  Factory('girl'))->select();
    $getObject->people();
    $getObject = (new  Factory('boy'))->select();
    $getObject->people();
  • 相关阅读:
    InterLockedIncrement and InterLockedDecrement函数原理
    矩阵文件书写的简洁代码
    注册自定义URL协议(zhuan)
    求整数的位数
    WinExec unicode 处理
    C++中如何获取对象的名字(变量名,注意不是类名)
    计算所与北大往事回顾
    不尚贤在人事管理中的作用
    寻找适合自己的无资金创业之路
    诺基亚:用薪酬激励员工
  • 原文地址:https://www.cnblogs.com/webph/p/6735321.html
Copyright © 2020-2023  润新知