zoukankan      html  css  js  c++  java
  • php抽象工厂模式的研究

    上一节理解了工厂模式。其代码原理如下:

    <?php
    
    abstract class ApptEncoder{
        abstract function encode();
    }
    
    class BloggsApptEncoder extends ApptEncoder{
        function encode(){
            return "data encode farmat";
        }
    }
    
    abstract class CommsManager{
        abstract function getHeaderText();
        abstract function getApptEncoder();
        abstract function getFootText();
    }
    
    class BloggsCommsManager extends CommsManager{
        function getHeaderText(){
            return "header";
        }
        function getApptEncoder(){
            return new BloggsApptEncoder();
        }
        function getFooterText(){
            return "footer";
        }
    }

    然后抽象工厂模式只是在工厂模式基础上进行升级,具体如下:

     1 <?php
     2 
     abstract class ApptEncoder{
         abstract function encode();
     }
     
     7 class BloggsApptEncoder extends ApptEncoder{
     8     function encode(){
     9         return "data encode format appt";
    10     }
    11 }
    12 

      abstract class TdcEncoder{
        
    abstract function encode();
    }
    13 class BloggsTdcEncoder extends TdcEncoder{ 14 function encode(){ 15 return "data encode format tdc"; 16 } 17 } 18
      abstract class ConEncoder{  
        
    abstract function encode();
    } 19 class BloggsConEncoder extends ConEncoder{ 20 function encode(){ 21 return "data encode format con"; 22 } 23 } 24 25 26 abstract class CommsManager{ 27 abstract function getHeaderText(); 28 abstract function getApptEncoder(); 29 abstract function getFootText(); 30 31 abstract function getTdcEncoder(); 32 abstract function getConEncoder(); 33 } 34 35 class BloggsCommsManager extends CommsManager{ 36 function getHeaderText(){ 37 return "header"; 38 } 39 function getApptEncoder(){ 40 return new BloggsApptEncoder(); 41 } 42 function getFooterText(){ 43 return "footer"; 44 } 45 46 47 function getTdcEncoder(){ 48 return new BloggsTdcEncoder(); 49 } 50 51 function getConEncoder(){ 52 return new BloggsConEncoder(); 53 } 54 }

    具体原理就是在工厂模式上的扩展和分支吧

  • 相关阅读:
    C# IL语法
    设计模式学习笔记(1)之单例模式
    设计模式学习笔记(3)之策略设计模式(Strategy)
    ORACLE与SQL SERVER语法区别
    浅谈测试驱动开发(TDD)
    面向对象的5条基本设计原则
    干法读后感磨练灵魂 提升心志
    Linux系统管理之硬盘管理
    Linux硬件信息采集
    Linux iptables
  • 原文地址:https://www.cnblogs.com/jami918/p/3614234.html
Copyright © 2011-2022 走看看