标签:ceo ret 直接 == vat 设计 int nbsp 静态属性
回想了一下php的设计模式,好像记得不完全了。此处对php设计模式重新做一下复习总结。
单例模式:核心只包括一个特殊的类,保证系统中只能有一个实例,即一个类中只能有一个实例化对象,避免系统中有大量的new操作。
单例模式创建有四个要点:
1、私有化的静态属性(用于保存建立的类的实例对象),
2、私有化 的构造方法(防止从外部new生成对象),
3、私有化的克隆方法(防止外部重过clone(克隆)方法生成对象),
4、公有化的静态方法(调用当前单例类的一个入户。)
<?php header("Content-type:text/html;charset=utf-8"); class danli{ static private $obj; //私有化的静态属性,保存实例对象 private function __construct(){ //私有化的构造方法 //echo "Is New() Ok"; } private function __clone(){} //私有的克隆方法 static public function getInstanceEntry(){ //公有化的静态方法,外部实例对象的入口 if(!self::$obj instanceof self){ //instanceof判断对象是否实例化 self::$obj = new self(); //或者是new danli() } return self::$obj; } public function getName($nn){ return $nn; } } $t = danli::getInstanceEntry(); echo $t -> getName(‘ABC‘); ?>
工厂模式:就是一个类,在这个类中是一些创建对象的方法,这样我们就可以使用工厂类去创建对象而不是直接使用new,如果要修改对象类型,直接在工厂类中修改即可。
//工厂模式 class gongchang{ static public function fact($n){ if($n == 1) return new A(); elseif ($n == 2) return new B(); elseif ($n == ‘c‘) return new C(); return new de(); } } Interface InstanceEntry{ public function getname(); } class A implements InstanceEntry{ private $n = "AAAAAAAA"; public function getname(){return $this->n;} } class B implements InstanceEntry{ private $n = "BBBBBBB"; public function getname(){return $this->n;} } class C implements InstanceEntry{ private $n = "CCCCCCCC"; public function getname(){return $this->n;} } class de implements InstanceEntry{ private $n = "morenjieguo"; public function getname(){return $this->n;} } $test = gongchang::fact(2); echo $test->getname(); ?>
标签:ceo ret 直接 == vat 设计 int nbsp 静态属性
原文地址:https://www.cnblogs.com/lovele-/p/9233451.html