php 工厂方法模式
2023-06-13 09:12:45 时间
大家好,又见面了,我是你们的朋友全栈君。
<?php
/**
* 工厂方法模式,定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。
*
* 包含的对象
* 1,抽象产品
* 2,具体产品
* 3,抽象工厂
* 4,具体工厂
*
* 将简单工厂模式的工厂类进行抽象化,避免扩展时需要修改简单工厂模式中的工厂类。方便扩展、维护。
**/
/**
* 运算类
**/
abstract class Operation
{
abstract public function getValue($num1,$num2);
}
/**
* 加法类
**/
class OperationPlus extends Operation
{
public function getValue($num1,$num2) {
return $num1 + $num2;
}
}
/**
* 减法类
**/
class OperationSub extends Operation
{
public function getValue($num1,$num2) {
return $num1 - $num2;
}
}
/**
* 乘法类
**/
class OperationMul extends Operation
{
public function getValue($num1,$num2) {
return $num1 * $num2;
}
}
/**
* 除法类
**/
class OperationDiv extends Operation
{
public function getValue($num1,$num2) {
try {
if ( $num2 == 0 ) {
throw new Exception('除数不能为0!');
} else {
return $num1/$num2;
}
} catch (Exception $e) {
echo $e->getMessage();
}
}
}
/**
* 抽象工厂类
**/
abstract class Factory
{
public abstract function getOperation();
}
/**
* 加法工厂
**/
class FactoryPlus extends Factory
{
public function getOperation() {
return new OperationPlus();
}
}
/**
* 加法工厂
**/
class FactorySub extends Factory
{
public function getOperation() {
return new OperationSub();
}
}
/**
* 加法工厂
**/
class FactoryMul extends Factory
{
public function getOperation() {
return new OperationMul();
}
}
/**
* 加法工厂
**/
class FactoryDiv extends Factory
{
public function getOperation() {
return new OperationDiv();
}
}
// 加法
$factory = new FactoryPlus();
$operation = $factory->getOperation();
echo $operation->getValue(10,11);
// 减法
$factory = new FactorySub();
$operation = $factory->getOperation();
echo $operation->getValue(10,11);
// 除法
$factory = new FactoryDiv();
$operation = $factory->getOperation();
echo $operation->getValue(10,2);
?>
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/164362.html原文链接:https://javaforall.cn
相关文章
- php替换字符串中,PHP 替换字符串中的一些字符方法介绍
- 企业版php自动发卡平台,企业版PHP自动发卡平台源码V6.3版
- 【说站】php方法断点如何实现
- Linux下安装PHP curl扩展的方法详解
- Linux切换PHP版本:快速而安全的方法(linux切换php版本)
- PHP连接MySQL的实现方法(php怎么连接mysql)
- PHP提高in_array查找元素的方法详解编程语言
- 命令在PHP中执行Linux命令的方法(php执行linux)
- Linux更新PHP,提升程序品质(linux更新php)
- 利用PHP操作Redis变得更简单(php中redis的使用)
- 数据PHP实现MySQL数据导出的实现方法(php导出mysql)
- PHP与MySQL结合使用实现关联查询的方法(php关联mysql查询)
- 慢解决PHP连接MySQL慢的方法(php连接mysql时间)
- 使用PHP在Linux系统中运行命令(php运行linux命令)
- PHP从Linux中读取文件的方法(php读取linux文件)
- PHP连接MSSQL数据库的方法和步骤(php如何连接mssql)
- PHP无法连接MSSQL数据库问题的解决方法(php 无法 mssql)
- PHP访问MSSQL数据库的实现方法(php 读取 mssql)
- 用PHP访问本地MSSQL数据库的实现方法(php访问本地mssql)
- Linux下轻松执行PHP文件的方法(linux执行php文件)
- php中用文本文件做数据库的实现方法
- PHP中的session永不过期的解决思路及实现方法分享
- PHP和Mysqlweb应用开发核心技术第1部分Php基础-1开始了解php
- 如何使用FireFox插件FirePHP调试PHP
- php另类上传图片的方法(PHP用Socket上传图片)
- PHP判断文章里是否有图片的简单方法
- php中unserialize返回false的解决方法