面向对象的设计模式
2016-12-15 16:47
281 查看
1、单例模式
目的:为了控制对象的数量(只能够有一个,相当于类的计划生育)
做法
1.将类的构造函数做成私有的
2.在类里面做了一个公有的函数来造对象
3.将该函数变为静态的
4.在函数里面加控制
例:
2、工厂模式
用来生产对象
例:
目的:为了控制对象的数量(只能够有一个,相当于类的计划生育)
做法
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(); ?>
相关文章推荐
- dev LayoutControl布局控件
- 边框、内阴影、背景图片、背景颜色、外阴影的呈现级别
- Mysql学习(四)
- block 什么时候需要构造循环引用
- LeetCode #226 - Invert Binary Tree - Easy
- spring annotation 注入static 属性
- JAVA远程连接linux服务器读取文件(JSch)
- MySql中利用insert into select 准备数据uuid主键冲突
- 利用Application 存储全变量
- springboot CGLib 方式实现AOP代理问题
- [kpw] Kindle Paperwhite被强制升级到5.6.5后,USBNetwork无法使用
- OpenCV: Canny边缘检测算法原理及其VC实现详解(转载)
- ORACLE中STATUS为INACTIVE但是SERVER为SHARED状态的会话浅析
- grep
- 第五章 引用类型 Function 类型
- 在css嵌套中的html的table里的字左右不对齐
- iOS之应用程序国际化
- lintcode,排序列表转换为二分查找树
- PHP SOCKET编程
- Spring框架下类的初始化顺序