不同对象类型的工厂对象
创始人
2025-01-08 23:00:25
0

使用抽象工厂模式,根据不同的条件返回不同的工厂对象。

实现代码如下:

// 定义一个抽象工厂接口
interface AbstractFactory {
   public function createProductA();
   public function createProductB();
}

// 实现具体工厂类
class ConcreteFactoryForType1 implements AbstractFactory {
   public function createProductA() {
      return new ProductType1A();
   }
   public function createProductB() {
      return new ProductType1B();
   }
}

class ConcreteFactoryForType2 implements AbstractFactory {
   public function createProductA() {
      return new ProductType2A();
   }
   public function createProductB() {
      return new ProductType2B();
   }
}

// 定义抽象产品接口
interface AbstractProductA {
   public function usefulFunctionA(): string;
}

interface AbstractProductB {
   public function usefulFunctionB(): string;
}

// 实现具体产品类
class ProductType1A implements AbstractProductA {
   public function usefulFunctionA(): string {
      return "The result of the product A1.";
   }
}

class ProductType1B implements AbstractProductB {
   public function usefulFunctionB(): string {
      return "The result of the product B1.";
   }
}

class ProductType2A implements AbstractProductA {
   public function usefulFunctionA(): string {
      return "The result of the product A2.";
   }
}

class ProductType2B implements AbstractProductB {
   public function usefulFunctionB(): string {
      return "The result of the product B2.";
   }
}

// 客户端代码,根据不同条件调用不同的工厂来获取不同类型的对象
$clientCode = function (AbstractFactory $factory) {
    $productA = $factory->createProductA();
    $productB = $factory->createProductB();

    echo $productA->usefulFunctionA() . "
"; echo $productB->usefulFunctionB() . "
"; }; // 调用客户端代码 $clientCode(new ConcreteFactoryForType1()); $clientCode(new ConcreteFactoryForType2());

相关内容

热门资讯

透视详细!wepoker辅助器... 透视详细!wepoker辅助器安装包(透视)wepoker辅助器安装包,教程手筋(竟然有挂)-哔哩哔...
透视教你!wepoker透视有... 透视教你!wepoker透视有用吗(透视)智星菠萝透视,教程诀窍(有挂攻略)-哔哩哔哩1、首先打开w...
透视透视!pokerworld... 透视透视!pokerworld修改器(透视)xpoker辅助神器,教程经验(有挂透明挂)-哔哩哔哩1...
透视科普!epoker免费透视... 透视科普!epoker免费透视脚本(透视)wepoker怎么看牌型,教程要领(有挂头条)-哔哩哔哩1...
透视揭露!wepoker透视脚... 透视揭露!wepoker透视脚本免费app(透视)wpk私人局辅助是真的吗,教程手册(有挂分析)-哔...
透视曝光!aapoker辅助怎... 透视曝光!aapoker辅助怎么用(透视)wpk插件辅助,教程攻略(有挂讲解)-哔哩哔哩1、打开软件...
透视解密!xpoker透视辅助... 透视解密!xpoker透视辅助(透视)fishpoker透视底牌,教程操作(真是有挂)-哔哩哔哩1、...
透视透视!聚星ai辅助工具收费... 透视透视!聚星ai辅助工具收费多少(透视)wepoker有透视吗,教程方式(有挂解密)-哔哩哔哩1、...
透视普及!如何判断wpk辅助软... 透视普及!如何判断wpk辅助软件的真假(透视)wepoker透视脚本免费使用视频,教程手册(有挂实锤...
透视辅助!aapoker透视怎... 透视辅助!aapoker透视怎么用(透视)德普之星透视辅助,教程方针(确实有挂)-哔哩哔哩1、每一步...