php设计模式-简单工厂模式

本文介绍PHP中抽象类及工厂模式的应用,通过具体实例展示了如何定义抽象类、实现子类,并利用工厂模式根据用户输入选择正确的子类进行实例化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • ①抽象基类:类中定义抽象一些方法,用以在子类中实现
  • ②继承自抽象基类的子类:实现基类中的抽象方法
  • 工厂类:用以实例化所有相对应的子类

<?php
/*
 *定义个抽象的类,让子类去继承实现它
 */
abstract class Operation
{
	//抽象方法不能包含函数体
	abstract public function getValue($num1,$num2);//子类必须实现该函数功能
}

/*
 *加法
 */
class OperationAdd 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", 1);
			}else{
				return $num1/$num2;
			}
		}catch(Exception $e){
			echo "错误信息".$e->getMessage();
		}
	}
}

/**
     * 求余类(remainder)
     *
     */
    class OperationRem extends Operation {
        public function getValue($num1,$num2){
            return $num1%$num12;
        }
    }

// 现在还有一个问题未解决,就是如何让程序根据用户输入的操作符实例化相应的对象呢?
// 解决办法:使用一个单独的类来实现实例化的过程,这个类就是工厂

/**
 * 工程类,主要用来创建对象
 * 功能:根据输入的运算符号,工厂就能实例化出合适的对象
 *
 */
class Factory{
	public static function createObj($operate){
		switch($operate){
			case '+':
				return new OperationAdd();
				break;
			case '-':
				return new OperationSub();
				break;			
			case '*':
				return new OperationMul();
				break;			
			case '/':
				return new OperationDiv();
				break;
		}
	}
}
$test=Factory::createObj('/');
$result = $test->getValue(23,0);
var_dump($result);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值