设计模式:工厂模式和单例模式

  在平常实用类的时候,往往要进行类功能的扩展,如果直接在里面进行扩展,有可能会对类里面的其他功能产生影响,所以在扩展功能的时候就要重新写类,这就要采用继承的方式,如:

 1 class YunSuan()
 2 {
 3        public $a;
 4        public $b;
 5        function Suan()  //造一个运算的方法
 6        {
 7        }  
 8 }
 9 class Jia extends YunSuan()   //造一个加的子类继承父类
10 {
11        function Suan()   //重写Suan的方法
12        {
13              return $this->a+$this->b;
14        }  
15 }

工厂模式:生产对象

  如果类里面的方法名使用了很复杂的单词命名,就会导致在使用类时必须将类里面的方法名记住,这会在使用类的时候造成不便。采用工厂模式,通过某些特殊的符号来生产相应的类,就会使我们在使用类的时候很方便,如下面一个工厂模式的类:

 1 class gongchang    //造一个工厂模式的类
 2 {
 3       static function shengchan($ysf)  //定义一个生产对象的方法
 4       {
 5            //判断每个符号,并生产相应的类
 6             case "+":
 7                ruturn new Jia();
 8                break;
 9             case "_":
10                return new Jian();
11                break;
12       }
13 }

  造好里之后,就可以用相应的符号来生成相应的对象,来实现功能:

$jia  = gongchang::shengchan("+");
$jia->a = 5;
$jia->b = 10;
$jia->suan();

 

单例模式:

在程序中,如果一个类来造了很多对象的话,就会导致服务器出问题,所以我们要控制生成类的个数,这就要用到单例模式,控制每个类只能造一个对象。

class DBDA
{
      public static $dx;    //存储对象
      //将构造函数变成私有,避免外界访问
      private function __contruct()
      {
      }
      //生成对象
      static function shengcheng()
      {
            if(empty(self::$dx))
            {
                   $dx = new DBDA();
            }
            return self::$dx;
      }
}

 

posted @ 2016-07-12 11:05  冷风~云  阅读(246)  评论(0编辑  收藏  举报