美文网首页
设计模式(一):简单工厂模式

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

作者: 骑着母猪砍大象 | 来源:发表于2018-11-26 20:28 被阅读34次

    转载请注明作者和出处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);
    
    输出结果:

    简单工厂优缺点

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

    相关文章

      网友评论

          本文标题:设计模式(一):简单工厂模式

          本文链接:https://www.haomeiwen.com/subject/tvfiqqtx.html