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

    概念

    工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替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();
  • 相关阅读:
    Mysql 中的MVCC原理,undo日志的依赖
    Innodb 实现高并发、redo/undo MVCC原理
    Django restful 规范
    TCP 原理
    HTTPS建立连接的过程
    HTTP协议,Http 常用状态码
    SQL注入
    Mysql 索引问题集锦
    Mysql MyISAM与InnoDB 表锁行锁以及分库分表优化
    归并排序Python 实现
  • 原文地址:https://www.cnblogs.com/webph/p/6732620.html
Copyright © 2011-2022 走看看