********
<?php
/*
* 抽象产品类
*/
abstract class ApptEncoder{
abstract function encode();
}
class BloggsApptEncoder extends ApptEncoder{
function encode(){
return "Apponitment data encode in BloggsCal format\n<br>";
}
}
abstract class CommsManager {
abstract function getHeaderText();
abstract function getApptEncoder();
abstract function getFooterText();
}
class BloggsCommsManager extends CommsManager {
function getHeaderText(){
return "BloggsCal header\n <br>";
}
function getApptEncoder(){
return new BloggsApptEncoder();
}
function getFooterText(){
return "BloggsCal footer\n<br>";
}
}
$fac = new BloggsCommsManager();
//客户端代码直接调用 生成的对象直接调用 产品抽象类的encode()方法,不需要知道具体的产品
$pro = $fac->getApptEncoder();
echo $fac -> getHeaderText();
echo $pro -> encode();
echo $fac -> getFooterText();
<?php
/**
* 抽象工厂模式
* @author GaoZhen'an <gaoce227@hotmail.com>
* @version $Id: 02.php $
*/
abstract class CommsManager {
abstract function getHeaderText();
abstract function getApptEncoder();
abstract function getTtdEncoder();
abstract function getContactEncoder();
abstract function getFooterText();
}
class BloggsCommsManager extends CommsManager {
function getHeaderText(){
return "BloggsCal header <br>";
}
function getApptEncoder() {
return new BloggsApptEncoder();
}
function getTtdEncoder() {
return new BloggsTtdEncoder();
}
function getContactEncoder() {
return new BloggsContactEncoder();
}
function getFooterText() {
return "BloggsCal footer <br>";
}
}