工厂方法模式实例与讲解

来源:互联网 发布:惠普m1216扫描软件 编辑:程序博客网 时间:2024/05/29 13:30

abstract class ApptEncoder{    abstract function encode();}class BloggsApptEncoder extends ApptEncoder{    function encode(){        return 'this is bloggs object';    }}class MegaApptEncoder extends ApptEncoder{    function encode(){        return 'this is mega object';    }}abstract class CommsManager{    abstract function getHeaderText();    abstract function getApptEncoder();    abstract function getFooterText();}class BloggsCommsManager extends CommsManager{    function getHeaderText(){        return 'this is bloggs header';    }    function getApptEncoder(){        return new BloggsApptEncoder();    }    function getFooterText(){        return 'this is bloggs footer';    }}class MegeCommsManger extends CommsManager{    function getHeaderText(){        return 'this is mega header';    }    function getApptEncoder(){        return new MegaApptEncoder();    }    function getFooterText(){        return 'this is mega footer';    }}

以上工厂模式方法的UML图如下:




对以上的工厂模式方法,我们还可以进行扩展,如果此时,我们需要生成新的LogCommsManager,我们只需要让LogCommsManager继承抽象类CommsManager,然后创建新的类LogApptEncoder,让LogApptEncoder继承ApptEncoder即可,很好的遵循了设计模式的开闭原则对于修改是封闭的,对于扩展是开发的)。



0 0