深入理解PHP:高级技巧、面向对象与核心技术(原书第3版) -- 设计模式之工厂模式
来源:互联网 发布:电信光猫有几个端口 编辑:程序博客网 时间:2024/04/30 01:31
<?php// 设计思想:创建型模式,和单一模式不同,此设计思想用来创建不同类型的多个对象。// 适用于:程序编写时候,并不清楚它的确切对象类型,只有应用运行时候,才能确定。适用于动态的应用程序中。abstract class ShapeFactory{ static function Create($type, array $sizes) { // 工厂模式标志,一般名称为 Create,factory,factoryMethod,createInstance 此方法用来创建不同类型的多个对象。 switch ($type) { case "rectangle": return new Rectangle($sizes[0], $sizes[1]); break; case "triangle": return new Triangle($sizes[0], $sizes[1], $sizes[2]); break; } }}class Rectangle{ public $width = 0; public $height = 0; function __construct($w = 0, $h = 0) { $this->width = $w; $this->height = $h; } function setSize($w = 0, $h = 0) { $this->width = $w; $this->height = $h; } function getArea() { return ($this->width * $this->height); } function getPerimeter() { return (($this->width + $this->height) * 2); } function isSquare() { if ($this->width == $this->height) { return true; // Square } else { return false; // Not a square } }}class Triangle{ private $_sides = array(); private $_perimeter = NULL; function __construct($s0 = 0, $s1 = 0, $s2 = 0) { $this->_sides[] = $s0; $this->_sides[] = $s1; $this->_sides[] = $s2; $this->_perimeter = array_sum($this->_sides); } public function getArea() { return (SQRT( ($this->_perimeter / 2) * (($this->_perimeter / 2) - $this->_sides[0]) * (($this->_perimeter / 2) - $this->_sides[1]) * (($this->_perimeter / 2) - $this->_sides[2]) )); } public function getPerimeter() { return $this->_perimeter; }}// 为了体现其动态特性,可用 http 协议 get 传值。// http://some.com?name=triangle&size[]=4&size[]=2&size[]=3$obj = ShapeFactory::Create("triangle", [4, 2, 3]);echo $obj->getArea();echo "\n";echo $obj->getPerimeter();echo "\n";$obj = ShapeFactory::Create("rectangle", [1, 3]);echo $obj->getArea();echo "\n";echo $obj->getPerimeter();echo "\n";
阅读全文
0 0
- 深入理解PHP:高级技巧、面向对象与核心技术(原书第3版) -- 设计模式之工厂模式
- 深入理解PHP:高级技巧、面向对象与核心技术(原书第3版) -- 设计模式之单一模式
- 深入理解PHP:高级技巧、面向对象与核心技术(原书第3版) -- 设计模式之组合模式
- 深入理解PHP:高级技巧、面向对象与核心技术(原书第3版) -- 设计模式之策略模式
- 深入理解PHP:高级技巧、面向对象与核心技术(原书第3版) -- 高级 PHP 技巧
- 深入理解PHP:高级技巧、面向对象与核心技术
- 深入理解PHP高级技巧、面向对象与核心技术之调整浏览器缓存
- PHP面向对象深入理解之四(设计模式-工厂模式)
- PHP面向对象深入理解之四(设计模式-单例模式)
- PHP面向对象深入理解之四(设计模式-观察者模式)
- 深入PHP面向对象、模式与实践——高级特性(3)
- PHP设计模式之-----高级工厂模式
- PHP面向对象编程设计模式(三)工厂模式
- 深入浅出PHP面向对象与设计模式3--抽象工厂模式
- php面向对象(工厂模式与单例模式)
- 面向对象设计和过程式编程(6.2)《深入PHP:面向对象、模式与实践》
- 深入PHP面向对象、模式与实践——高级特性(1)
- 深入PHP面向对象、模式与实践——高级特性(2)
- 织梦5.7系统dede:likearticle全站内容关联
- 山东物联网蓝盾杯网络空间攻防赛赛后总结
- MySQL知识点整理(学习资料)
- 基于二叉树的表达式计算-C语言
- 剑指Offer--12.数组的整数次方
- 深入理解PHP:高级技巧、面向对象与核心技术(原书第3版) -- 设计模式之工厂模式
- gcc g++区别与联系
- 机房重构--注册
- C++ set/multiset
- Android设置数据库的路径
- android 官方mvp框架优化:lifecycle-mvp,像前端那样组合式写页面
- Java-Map用法简介
- ISE新建项目报错解决方法
- 【分布式1】 分布式架构