设计模式学习笔记—简单工厂模式

1.简单工厂模式

1.1 介绍

简单工厂模式属于创建型设计模式,由一个工厂对象的静态方法决定创建出哪一个具体实例。

1.2 优缺点

1.2.1 优点

工厂类负责处理根据不同条件创建具体实例,实例消费类不再需要通过复杂的逻辑创建实例,只需要给工厂类必要的判断条件。明确了各个类的职责,将实例和实例消费类完全解耦。

1.2.2 缺点

所有实例的创建逻辑全部集中在工厂类中,违反了高内聚责任分配原则。当实例不断增多,工厂类会越来越复杂,而且当新增实例类时,工厂类也得相应修改。

1.3 适用场景

简单工厂模式适用于实例类相对较少,或者实例类几乎不会新增减少的情况。

1.4 代码示例

在开发OA系统时,我们添加一个新员工时,会确定他的部门级别,公司发展部门可能会增加很多,而员工级别相对变化较少,我们以员工级别作为实例类来写例子。
php代码
//职级抽象类

abstract class Grade {
     
    protected $personInfo = array();
    public function setPersonInfo($name){
     
        $this->personInfo['name'] = $name;
    }
     //不同部门可能有不同处理,抽象此方法
    abstract public function setDepartment($department);
    
    public function save(){
     
        //todo
    }
}
//员工实例
class Staff extend Grade{
     
    public function setDepartment($department){
     
        $this->personInfo['department'] = $department;
        //todo staff 
    }
}
//经理实例
class Manager extend Grade{
     
    public function setDepartment($department){
     
        $this->personInfo['department'] = $department;
         //todo staff 
    }
}

//工厂类
class GradeFactory{
     
    public static function create($grade){
     
        switch($graade){
     
            case 'staff':
            $re = new Staff();
            break;
            case 'manager':
            $re = new Manager();
            break;
            default:
            $re = new Staff();
        }
    }
}

你可能感兴趣的:(笔记,教程,设计模式,PHP学习,php,工厂,设计模式,简单工厂)