设计模式:工厂模式和单例模式
在平常实用类的时候,往往要进行类功能的扩展,如果直接在里面进行扩展,有可能会对类里面的其他功能产生影响,所以在扩展功能的时候就要重新写类,这就要采用继承的方式,如:
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; } }