大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
<?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);
?>
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/164362.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...