zoukankan      html  css  js  c++  java
  • PHP设计模式系列

    • 什么是建造者模式

    建造者模式主要是为了消除其它对象复杂的创建过程。

    • 设计场景
      1. 有一个用户的UserInfo类,创建这个类,需要创建用户的姓名,年龄,金钱等信息,才能获得用户具体的信息结果。
      2. 创建一个UserInfoBuilder 用户建造者类,这个类,将UserInfo复杂的创建姓名,年龄,金钱等操作封装起来,简化用户类的创建过程
    • 代码:UserInfo类,创建UserInfo类是复杂的,痛苦的。
        //建造者模式,目的是消除其它对象复杂的创建过程  
          
        /* 描述一个用户的类,包含用户姓名,年龄,金钱 */  
        class UserInfo {  
          
            protected $userName = '';    
            protected $userAge = '';  
            protected $userMoney = '';  
          
            public function setUserName($userName) {  
                $this->userName = $userName;  
            }     
              
            public function setUserAge($userAge) {  
                $this->userAge = $userAge;  
            }     
              
            public function setUserMoney($userMoney) {  
                $this->userMoney = $userMoney;  
            }  
              
            public function getPeople() {  
                echo "这个人的姓名是:" . $this->setUserName . ',年龄是:'  . $this->userAge . ', 金钱:' . $this->userMoney;  
            }  
        }  
        /* 实例化,并且创建这个用户的时候,是很痛苦的,需要设置用户名,年龄和金钱*/  
        $peopleInfo = array(  
            'userName' => 'initphp',  
            'userAge' => 28,  
            'userMoney' => '100元'  
            );  
        $UserInfo = new UserInfo;  
        //下面需要一步步的设置用户信息,才能得到用户详细信息,过程纠结而痛苦  
        $UserInfo->setUserName($peopleInfo['userName']);   
        $UserInfo->setUserAge($peopleInfo['userAge']);  
        $UserInfo->setUserMoney($peopleInfo['userMoney']);  
        $UserInfo->getPeople();  

    代码:UserInfoBuilder 用户信息建造者类,将UserInfo的创建过程封装掉,开发者使用起来心情舒畅

        <?php  
        //建造者模式,目的是消除其它对象复杂的创建过程  
        include("UserInfo.php");  
        class UserInfoBuilder {  
            protected $obj;  
              
            public function __construct() {  
                $this->obj = new UserInfo;  
            }  
              
            public function buildPeople($peopleInfo) {  
                $this->obj->setUserName($peopleInfo['userName']);  
                $this->obj->setUserAge($peopleInfo['userAge']);  
                $this->obj->setUserMoney($peopleInfo['userMoney']);  
            }   
              
            public function getPeople() {  
                $this->obj->getPeople();  
            }  
        }  
          
        /* 创建过程被封装了,用户使用简单了 */  
        $peopleInfo = array(  
            'userName' => 'initphp',  
            'userAge' => 28,  
            'userMoney' => '100元'  
            );  
        $UserInfoBuilder = new UserInfoBuilder;  
        $UserInfoBuilder->buildPeople($peopleInfo); //直接一个build  
        $UserInfoBuilder->getPeople();  

    转自:http://blog.csdn.net/initphp/article/details/7677561

  • 相关阅读:
    fun()可拆分赋值 fun()可以拆, 变成 fun 和 括号, fun 可以赋值
    全局变量是列表list 的改变, 竟然在局部,用append 就可以了..... 不用global sth...
    * args 和 **kwargs
    三元运算符 c = a if a>b else b
    终于明白为什么要赋值给ret ,
    只要下面看到func() 带括号的,就会弹上去找对应的函数,然后执行相应的函数块
    关于mysql复合主键
    再次回顾post请求中的enctype
    关于crontab以及输出重定向
    HTTP请求中的form data和request payload的区别
  • 原文地址:https://www.cnblogs.com/zhhtao/p/4414608.html
Copyright © 2011-2022 走看看