您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

php 工厂方法模式

2024/3/28 23:20:44发布7次查看
php 工厂方法模式
<?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); ?>
更多php 工厂方法模式。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product