面向对象的设计模式
Posted 风中摇曳的小花朵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象的设计模式相关的知识,希望对你有一定的参考价值。
1、单例模式
目的:为了控制对象的数量(只能够有一个,相当于类的计划生育)
做法
1.将类的构造函数做成私有的
2.在类里面做了一个公有的函数来造对象
3.将该函数变为静态的
4.在函数里面加控制
例:
<?php class Ren { public $name; //成员变量用来存储该对象 static public $dx; private function __construct() 私有的 构造函数 { } static function DuiXiang() 把方法变成静态的 { if(empty(self::$dx)) 判断 是否是空 { self::$dx = new Ren(); } return self::$dx; } } $r = Ren::DuiXiang(); $r->name = "张三"; 两个会指向一个函数 $r1 = Ren::DuiXiang(); $r1->name = "李四"; var_dump($r); ?>
2、工厂模式
用来生产对象
例:
<?php abstract class YunSuan { public $a; public $b; function Suan() { } } class Jia extends YunSuan { function Suan() { return $this->a+$this->b; } } class Jian extends YunSuan { function Suan() { return $this->a-$this->b; } } class Cheng extends YunSuan { function Suan() { return $this->a*$this->b; } } //做一个工厂类 class GongChang { static function ShengChan($fuhao) { switch($fuhao) { case "+": return new Jia(); break; case "-": return new Jian(); break; case "*": return new Cheng(); break; } } } //算加法 $suan = GongChang::ShengChan("*"); $suan->a = 10; $suan->b = 5; echo $suan->Suan(); ?>
以上是关于面向对象的设计模式的主要内容,如果未能解决你的问题,请参考以下文章