ホームページ  >  記事  >  バックエンド開発  >  PHP のファクトリ パターンとファクトリ メソッド パターンとは何ですか?

PHP のファクトリ パターンとファクトリ メソッド パターンとは何ですか?

慕斯
慕斯オリジナル
2021-06-23 10:24:561571ブラウズ

ファクトリ メソッド パターンの核心は、ファクトリ クラスがすべてのオブジェクトの作成を担当しなくなり、特定の作成作業をサブクラスに任せ、特定のファクトリ クラスを与えることのみを担当する抽象ファクトリ ロールになることです。どの製品クラスをインスタンス化する必要があるかという詳細には触れずに、次のことを詳しく調べることができます。

関連する推奨事項: 「PHP のデザイン パターンとは何ですか?」シングルトンとは何ですか?使い方? >>

ファクトリ:

$a = new Dog('abc');

インターフェイスでいくつかのメソッドを定義します

インターフェイスを実装するクラスは、これらのメソッドを実装します

ファクトリ クラス:オブジェクトのインスタンス化に使用されます

利点:システム構造に柔軟な動的拡張メカニズムを提供します。便利なメンテナンス

コードを使用して、ファクトリー モードが何であるかを示します。まず、新しいファイルを作成します。ファイル内にインターフェイスを作成します。インターフェイスには 2 つのメソッドがあります。次に、これを実装する 2 つのクラスを作成します。定義した 2 つのメソッドを書き出す必要があります。その後、クラスを作成します。では、それらをファクトリにどのように記述し、ファクトリを通じて定義した 2 つのオブジェクトを作成するのでしょうか? まず、ファクトリ クラスを作成し、クラス内で静的メソッドを内部に記述し、型を渡し、型を選択します。型が person の場合は、person を作成します。human オブジェクトを作成したい場合は、ファクトリを介して作成するだけで済みます。具体的なコードは次のとおりです:

<?php
interface Skill
{
function family();
function pome();
}
class Person implements Skill
{
  function family()
{
  echo &#39;如果努力有用的话,还要天才干什么<br />&#39;;
}
   function pome()
{
echo &#39;爱恨痴狂,抵不过沧海一笑&#39;;
}
}
class JingLing implements Skill
{
  function family( )
{
  echo &#39;为什么会痛苦,一直微笑就好了<br />&#39; ;
}
  function buy()
{
  echo &#39;嘴上说不要,但你的眼睛很诚实嘛<br />&#39;;
}
}
class Factory 
{
  static function createHero($type)
  {
    switch ($type) {
      case&#39;person&#39; :
        return new Person();
      break;
      case&#39;jingling&#39; :
        return new JingLing();
      break;
}
}
}
$person = Factory::createHero(&#39;person&#39;);
$jing = Factory::createHero(&#39;jingling&#39;);

上記はファクトリ パターンと呼ばれるものです;

ファクトリ メソッド:

ファクトリ メソッド パターンの中核はファクトリですクラスはすべてのオブジェクトの作成を担当しなくなりましたが、特定の作成作業はサブクラスに任せ、抽象ファクトリの役割になります。どの製品に触れることなく、特定のファクトリ クラスが実装する必要があるインターフェイスを提供するためです。クラスの詳細はインスタンス化する必要があります。

上記のコードによると、ファクトリ パターンがオブジェクトの作成を担当していることがわかります。コードを例に挙げると、インターフェイスと同じ 2 つのメソッドを指定し、次に 2 つのクラスを作成します。確立したファクトリ クラスはインターフェイスを規定することのみを担当し、具体的な実装はサブクラスに任せます。コードの例:

<?php
interface Tell
{
function pome();
function receive();
}
class shiju implements TeLL
{
function pome( )
{
echo &#39;没有心,就不会受伤&#39;;
}
function receive( )
{
echo&#39;守护爱人的心,因恐惧失去而无悔&#39;;
}
}
class HuaWei implements TeLL
{
function call()
{
echo &#39;不知道你的名字,但知道你的死期&#39;;
}
function receive( )
{
echo &#39;花有再开的那天,人有重逢的时候吗?&#39;;
}
}
//工厂类只负责规定接口,具体的实现交给子类
interface Factory
{
  static function createPhone( );
}
class XiaoFactory implements Factory
{
  static function createPhone( )
  return new XiaoMi ();
}
}
class HuaWeiFactory implements Factory
{
static function createPhone()
{
  return new HUawei();
}
}

推奨される学習: 「PHP ビデオ チュートリアル

以上がPHP のファクトリ パターンとファクトリ メソッド パターンとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。