工厂模式使用场景
* 1.在代码运行时我们才知道要生成对象类型
* 2.我们需要能够相对轻松地加入一些新的产品功能
* 3.每一个产品类型都能定制特定的功能
* 工厂方法模式能让我们用继承和多态来封装具体产品的创建
工厂方法:
function getApptEncode(){
return new MegaApptEncoder();
}
<?php
//数据编码器类(product)产品类
abstract class ApptEncoder{
abstract function encode();
}
//日历格式的编码器
class BloggsApptEncoder extends ApptEncoder{
function encode(){
return "Appointment data encode in BloggsCal format <br>";
}
}
//Mega格式的编码器
class MegaApptEncoder extends ApptEncoder{
function encode(){
return "Appointment data encode in MegaCal format <br>";
}
}
//管理员类(creator)创建者类
abstract class CommsManager{
abstract function getHeader();
abstract function getApptEncode();
abstract function getFooterText();
}
//日历管理员类
class BloggsCommsManager extends CommsManager{
function getHeader(){
return "BloggsCal header <br>";
}
function getApptEncode(){
return new BloggsApptEncoder();
}
function getFooterText(){
return "BloggsCal footer <br>";
}
}
//Mega管理员类
class MegaCommsManager extends CommsManager{
function getHeader(){
return "MegaCal Header <br>";
}
function getApptEncode(){
return new MegaApptEncoder();
}
function getFooterText(){
return "MegaCal footer <br>";
}
}