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

相关内容

热门资讯

此事迅速冲上热搜!掌中乐游戏中... 此事迅速冲上热搜!掌中乐游戏中心破解版(辅助挂)原来确实有挂(有挂模板)-哔哩哔哩;打开点击测试直接...
7分钟开挂!盛世辅助工具,赣湘... 7分钟开挂!盛世辅助工具,赣湘互娱辅助,解密教程-2026最新版本1、起透看视 赣湘互娱辅助透明视辅...
目前来看!天天爱柳州麻将辅助器... 大家好,今天小编来为大家解答天天爱柳州麻将辅助器这个问题咨询软件客服可以免费测试直接加微信(1367...
八分钟开挂!友友邳州辅助软件下... 八分钟开挂!友友邳州辅助软件下载,多乐手游辅助,解密教程-2026最新版本;所有人都在同一条线上,像...
现有说明如下!永胜联盟辅助软件... 您好:永胜联盟辅助软件这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌...
第4分钟开挂!情怀蒲仙辅助,广... 第4分钟开挂!情怀蒲仙辅助,广西友乐辅助器,揭秘教程-2026最新版本1、广西友乐辅助器系统规律教程...
截至发稿!科乐第三方辅助工具(... 截至发稿!科乐第三方辅助工具(辅助挂)果然真的有挂(有挂窍要)-哔哩哔哩;无需打开直接搜索薇:136...
第十分钟开挂!789大菠萝可以... 第十分钟开挂!789大菠萝可以控制吗,途游辅助软件网站,力荐教程-2026最新版本1、进入游戏-大厅...
刚刚!兴动游戏辅助器(辅助挂)... 刚刚!兴动游戏辅助器(辅助挂)一直是有挂(有挂讲义)-哔哩哔哩您好:兴动游戏辅助器这款游戏可以开挂,...
八分钟开挂!家乡大二辅助工具,... 八分钟开挂!家乡大二辅助工具,四川游戏家园破解版,大神讲解-2026最新版本1、这是跨平台的四川游戏...