php工厂模式,在另一个类里实例化另一个类的子类

<?php
abstract class ApptEncoder{
	abstract function encode();
}
class BloggsApptEncoder extends ApptEncoder{
	function encode(){
		return "Appointment data encoded in BloggsCal format\n";
	}
}
class MegaApptEncoder extends ApptEncoder{
	function encode(){
		return "Appointment data encode in MegaCal format\n";
	}
}
class CommsManager{
	const BLOGGS=1;
	const MEGA=2;
	private $mode=1;
	function __construct($mode){
		$this->mode=$mode;
	}
	function getApptEncoder(){
		switch($this->mode){
			case (self::MEGA):
				return new MegaApptEncoder();
			default:
				return new BloggsApptEncoder();
		}
	}
	function getHeaderText(){
		switch($this->mode){
			case (self::MEGA):
				return "Megacal header\n";
			default:
				 return "Bloggscal header\n";
		}
	}
}
$re=new CommsManager(CommsManager::MEGA);
$result=$re->getApptEncoder();
echo $re->getHeaderText();
echo $result->encode();
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值