php 工厂模式运用实例,php工厂模式的实例

* 单例模式:用于创建单一类型的唯一实例对象

* 工厂模式:用于创建多种类型的多个实例对象

//声明形状类

class Shape

{

//声明静态方法create,根据容器形状不同,创建不同图形类的实例

public static function create($type,array $size=[])

{

//检测形状?

switch ($type)

{

//长方形

case 'rectangle':

return new Rectangle($size[0],$size[1]);

break;

//三角形

case 'triangle':

return new Triangle($size[0],$size[1]);

break;

}

}

}

//声明长方形类

class Rectangle

{

private $width; //宽度

private $height; //高度

public function __construct($witch,$height)

{

$this->width = $witch;

$this->height = $height;

}

//计算长方形面积: 宽 * 高

public function area()

{

return $this->width * $this->height;

}

}

//声明三角形类

class Triangle

{

private $bottom; //底边

private $height; //边长

public function __construct($bottom,$height)

{

$this->bottom = $bottom;

$this->height = $height;

}

//计算三角形面积: (底 * 高) / 2

public function area()

{

return ($this->bottom * $this->height)/2;

}

}

//使用静态方法来实例化形状类,而不是用传统的new 关键字

//并根据形状类型参数的不同,来实例化不同的类,生成不同的对象

$rectangle = Shape::create('rectangle',[10,30]);

echo '长方形的面积是'.$rectangle->area();

echo '


';

$triangle = Shape::create('triangle',[20,50]);

echo '三角形的面积是'.$triangle->area();

java 抽象工厂模式简单实例

抽象工厂模式:提供一个创建一系列的相关的或者依赖的对象的接口,无需指定它们的具体实现类,具体的时间分别在子类工厂中产生. 类似于工厂模式:隔离了具体类的生产实现,使得替换具体的工厂实现类很容易.包含有 ...

C#工厂模式代码实例

此处示例为一个简易计算器工厂模式的实现. 创建类库,名为CalcLib,我把计算功能全部放在这个类库中. 首先,创建一个抽象的计算器算法父类,如下: /// /// 计 ...

php设计模式之简单工厂模式代码实例

C# 设计模式之工厂模式(一)

写在前面,PS一句:笔记专用,轻拍勿喷,看的不爽绕路前行即可. 一.举栗说明 1.剧情:某银行财务有三位员工,分别为A.B.C三人,主要任务就是去银行取钱,如下: class EmloyeeA: { ...

JS中的工厂模式

.一个栗子: var BicycleShop = function(){}; BicycleShop.prototype = { sellBicycle : function( model ){ va ...

php实现工厂模式

设计模式-使用php实现工厂方法模式 [概要] 创建型模式 定义一个用于创建对象的接口,让子类决定实例化哪一个类.Factory Method使用一个类的实例化延迟到其子类[GOF95] [结构图] ...

抽象工厂模式(Abstract Factory Pattern)

抽象工厂模式概述 定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类 抽象工厂抽象工厂,顾名思义,就是比工厂模式更抽象的工厂模式.在工厂模式中,一个具体工厂只负责生产一个具体产品 ...

java常用设计模式二:工厂模式

1.简单工厂模式(静态工厂方法模式) 抽象实例: public interface People { void talk(); } 具体实例: public class Doctor implemen ...

设计模式之策略模式&简单工厂模式

学习设计模式已经有非常长一段时间了,事实上先前已经敲过一遍了.可是老认为没有学到什么,认识也不够深刻.如今趁着重构机房,再又一次来过,也不晚. 事实上在敲了机房之后,看看模式,事实上,曾经非常难理解. ...

随机推荐

C#网络编程二:Socket编程

一:什么是SOCKET socket的英文原义是"孔"或"插座".作为进程通信机制,取后一种意思.通常也称作"套接字",用于描述IP地址和端 ...

cut用法

cut命令用来剪下文本文件里的数据,文本文件可以是字段类型或是字符类型. cut - remove sections from each line of files 语法 cut  OPTION... ...

UESTC 885 方老师买表 --状压DP

将方格的摆放分成两种: 1.水平摆放:此时所占的两个格子都记为1. 2.竖直摆放:此时底下那个格子记为1,上面那个记为0. 这样的话,每行都会有一个状态表示. 定义:dp[i][s]表示考虑已经填到第 ...

.Net 第三方工具包整理

抓取数据 Jumony (http://www.jumony.net/)是一个基于 .NET 技术,用 C# 编写的一个 HTML 引擎,其可以用来分析解读 HTML 文档中的数据,也可以修改和绑定数 ...

Swift 2.0 UIAlertView 和 UIActionSheet 的使用

在 IOS 9.0 之后, UIAlertView  是 给废弃了的,虽然你要使用的话,暂时还是可以的,但是在 9.0 之后,IOS 推荐大家使用的是  UIAlertController 这个控制器 ...

集群RPC通信

RPC即远程过程调用,它的提出旨在消除通信细节.屏蔽繁杂且易错的底层网络通信操作,像调用本地服务一般地调用远程服务,让业务开发者更多关注业务开发而不必考虑网络.硬件.系统的异构复杂环境. 先看看集群中 ...

Django 中的static文件的设置

STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static'), ('article',os.path.jo ...

WCF简单实例--用Winform启动和引用

以订票为例简单应用wcf程序,需要的朋友可以参考下 本篇转自百度文档,自己试过,确实可以用. 以订票为例简单应用wcf 新建一个wcf服务应用程序 在IService1.cs定义服务契约 namesp ...

python的paramiko模块简单应用

用法1,SSHClient 分别可以使用密码和秘钥登陆,然后执行命令,并且获取执行结果 import paramiko #创建一个SSH对象 ssh = paramiko.SSHClient() #允 ...

Crossed ladders---poj2507(二分+简单几何)

题目链接:http://poj.org/problem?id=2507   题意就是给你x y c求出?的距离: h1 = sqrt(x*x-d*d); h2 = sqrt(y*y-d*d); (h1 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值