设计模式(一):简单工厂模式

转载请注明作者和出处:https://www.jianshu.com/p/7f60dd5c2825

运行平台: Windows

php版本: php7.0


针对设计模式的学习,结合自己的情况,我针对自己做了几点安排

1.学习这玩意一靠天赋,二靠机缘,三靠多看例子,实在看不懂过段时间再来看,多看其他文章的例子,或者开源框架或者扩展包里的源码,找找看里面所用到的设计模式。
2.一定要多敲代码,要多敲代码,要多敲代码,要多敲代码

  • 类名通常命名为:模块名称”+Factory,比如用户模块就用UserFactory
  • 方法通常命名为 "get"+接口名称,“create”+接口名称,例如一个接口叫UserEbi,那么方法名称通常为,getUserEbi或者createUserEbi

代码

class Man{
    public function getName(){
        echo "my name is laowang";
    }
}

class Women{
    public function getName(){
        echo "my name is xiaomei";
    }
}

class PersonFactory{
    public function createPerson($type){
        if($type == 'man'){
            $person = new Man();
        }elseif($type == 'women'){
            $person = new Women();
        }
        return $person;
    }
}

$type = "man";
$person = new PersonFactory();
$name = $person->createPerson($type);
$name = $name->getName();
var_dump($name);

输出结果:

简单工厂优缺点

  • 帮助封装
    简单工厂虽然简单,但是非常友好的帮助我们实现了组件的封装,然后让组件外部能真正面向接口编程。
  • 解耦
    通过简单工厂,实现了客户端和具体实现类的解耦。
    如果上面的例子,客户端根本不知道是由谁来实现,也不知道具体如何实现,客户端只是通过工厂获取它需 要的接口对象。
  • 可能增加客户端的复杂度
    如果通过客户端的参数来选择具体实现的类,那么就必须要客户端理解每个参数的含义和功能,这会增加客户端的使用难度,也暴露了内部实现。

你可能感兴趣的:(设计模式(一):简单工厂模式)