不同对象类型的工厂对象
创始人
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());

相关内容

热门资讯

重大发现!微扑克辅助神器,微扑... 重大发现!微扑克辅助神器,微扑克透牌(微扑克)其实是有挂(有挂详细)-哔哩哔哩;1、微扑克辅助神器系...
研究成果!微扑克ai会被检测到... 研究成果!微扑克ai会被检测到吗,微扑克有挂么(微扑克)本来是真的有挂(有挂解密)-哔哩哔哩亲,关键...
记者爆料!微扑克智能ai辅助,... 记者爆料!微扑克智能ai辅助,微扑克如何让系统发好牌(微扑克)本来存在有挂(有挂透视)-哔哩哔哩1、...
一分钟揭秘!微扑克辅助机器人,... 一分钟揭秘!微扑克辅助机器人,微扑克有挂么(微扑克)总是有挂(有挂功能)-哔哩哔哩1、微扑克辅助机器...
带你了解!微扑克如何让系统发好... 带你了解!微扑克如何让系统发好牌,微扑克有挂么(微扑克)本来是有挂(确实有挂)-哔哩哔哩1、构建自己...
玩家必看科普!微扑克系统发牌逻... 玩家必看科普!微扑克系统发牌逻辑,微扑克透牌(微扑克)确实有挂(有挂详情)-哔哩哔哩1、起透看视 微...
玩家必备教程!微扑克的辅助工具... 玩家必备教程!微扑克的辅助工具苹果,微扑克透牌(微扑克)真是是有挂(有挂存在)-哔哩哔哩;所有人都在...
一分钟揭秘!微扑克数据采集,微... 一分钟揭秘!微扑克数据采集,微扑克透牌(微扑克)果然是真的有挂(有挂细节)-哔哩哔哩1、进入到微扑克...
最新技巧!微扑克ai机器人,微... 最新技巧!微扑克ai机器人,微扑克ai机器人(微扑克)真是是有挂(有挂细节)-哔哩哔哩;1、微扑克a...
重大推荐!微扑克游戏辅助器,微... 重大推荐!微扑克游戏辅助器,微扑克如何让系统发好牌(微扑克)果然是有挂(有挂详情)-哔哩哔哩微扑克如...