<?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-【抽象工厂】模式代码演化实例
最新推荐文章于 2025-10-16 11:16:45 发布
本文介绍了一种使用PHP实现的抽象工厂模式案例。该模式通过定义一系列相关或相互依赖的对象的接口,而无需指定它们具体的类。文章展示了如何创建不同的编码器和通讯管理器,并讨论了这些组件之间的交互。

970

被折叠的 条评论
为什么被折叠?



