不同对象类型的工厂对象
创始人
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、打开软件启动之后找...
黑科技辅助(wepoke透明挂... 黑科技辅助(wepoke透明挂使用教程)外挂黑科技辅助神器(透视)切实是真的有挂(黑科技解说)1、w...
黑科技新版(德州之星外挂)外挂... 黑科技新版(德州之星外挂)外挂黑科技辅助软件(透视)真是真的有挂(黑科技工具)德州之星外挂辅助器中分...
黑科技辅助(wepoke挂真的... 黑科技辅助(wepoke挂真的假的)外挂透明挂辅助方法(透视)一贯存在有挂(黑科技解密)1、下载好w...
黑科技规律(wepoke透明真... 黑科技规律(wepoke透明真的吗)外挂透明挂辅助器(透视)确实有挂(黑科技脚本);1、任何wepo...
黑科技代打(微扑克必胜技巧)外... 黑科技代打(微扑克必胜技巧)外挂透视辅助安装(透视)其实真的是有挂(黑科技辅助)1、操作简单,无需注...
黑科技脚本(智星菠萝德州辅助)... 黑科技脚本(智星菠萝德州辅助)外挂透视辅助软件(透视)都是有挂(黑科技黑科技)进入游戏-大厅左侧-新...
黑科技辅助(德州之星辅助软件介... 黑科技辅助(德州之星辅助软件介绍)外挂透视辅助教程(透视)其实真的有挂(黑科技教程);1、任何德州之...
黑科技好友(wpk有伙牌吗)外... 黑科技好友(wpk有伙牌吗)外挂透明挂辅助技巧(透视)一直有挂(黑科技介绍);1、wpk有伙牌吗ai...
黑科技app(aapoker辅... 黑科技app(aapoker辅助是什么)外挂黑科技辅助技巧(透视)原来存在有挂(黑科技工具)1、aa...