<?php /** * Created by Victor * User: Victor * Date: 2018/3/16 * Time: 9:54 */ /** * 产品抽象类 * Class AppEncoder * Created by Victor */ abstract class AppEncoder { abstract function encode(); } class BloggsAppEncoder extends AppEncoder { public function encode() { return 'Appointment data encode in BloggsCal format'; } } class MegaAppEncoder extends AppEncoder { public function encode() { return 'Appointment data encode in MegaCal format'; } } abstract class TtdEncoder { abstract function endode(); } class BloggsTtdEncoder extends TtdEncoder { public function endode() { // TODO: Implement endode() method. } } /** * 抽象工厂类 * Class CommsManager * Created by Victor */ abstract class CommsManager { abstract function getAppEncoder() : AppEncoder;//方法返回类型约束 abstract function getTtdEncoder() : TtdEncoder; abstract function getTexter();//新的功能 } /** * 抽象工厂类的子类--具体的生产子类 * Class BlogComms * Created by Victor */ class BlogComms extends CommsManager { public function getAppEncoder() : AppEncoder { // TODO: Implement getEncoder() method. return new BloggsAppEncoder(); } public function getTtdEncoder() : TtdEncoder { return new BloggsTtdEncoder(); } public function getTexter() { // TODO: Implement getTexter() method. return 'Bloggs Texter'; } } /** * 抽象工厂类的子类--具体的生产子类 * Class MegaComms * Created by Victor */ class MegaComms extends CommsManager { public function getAppEncoder() : AppEncoder { // TODO: Implement getEncoder() method. return new MegaAppEncoder(); } public function getTtdEncoder() : TtdEncoder { return new BloggsTtdEncoder(); } public function getTexter() { // TODO: Implement getTexter() method. return 'Mega Texter'; } }
PHP面向对象设计模式-9.2-【抽象工厂】模式代码演化实例
最新推荐文章于 2024-03-22 01:22:59 发布