PHP

Factory Method パターン PHP

 

 

使いどころ

  • 一度生成したインスタンスに対して変更をさせない
  • 外部からインスタンスを生成させない。Robot::creteRedRobot(), Robot::createBlueRobot()からのみ生成が可能

 

 

<?php

class Robot
{
        private $name = '';
        private $color;

        public static function createRedRobot($name_){
                return new self($name_, 'red');
        }

        public static function createBlueRobot($name_){
                return new self($name_, 'blue');
        }

        // constructをprivateにしているのが大事。
        // createRedRobot(), createBlueRobot()からのみインスタンスを生成できる
        private function __construct($name_, $color_){
                $this->setName($name_);
                $this->color = $color_;
        }

        public function setName($name_){
                $this->name = (string) $name_;
        }


        public function getName(){
                return $this->name;
        }

        public function getColor(){
                return $this->color;
        }

}


$yuuRobot  = Robot::createRedRobot('優ロボット');
echo $yuuRobot->getName();  // 優ロボット
echo $yuuRobot->getColor(); // red

$yuuRobot->__construct('優ロボット', 'yellow'); // 無効
echo $yuuRobot->getColor(); // 表示されない

$yuuRobot  = Robot::createBlueRobot('優2ロボット'); // 無効 上書きされない
echo $yuuRobot->getName();  // 表示されない
echo $yuuRobot->getColor(); // 表示されない


$yuu3Robot  = Robot::createBlueRobot('優3ロボット'); // 無効 上書きされない
echo $yuu3Robot->getName();  // 表示されない
echo $yuu3Robot->getColor(); // 表示されない

 

表示

優ロボットred

 

  • constructをprivateにしているのが重要
  • static functionで指定したcreateRedRobot(), createBlueRobot()からのみインスタンスを生成できる
  • 一度作ったインスタンスに対して、プロパティを上書きさせない
  • インスタンスは1つ

 

 

 

 

 

 

 

 

 

 

 

爆速レンタルサーバならConoHa WING

 

サーバはプロに全部お任せ!「仕事」に専念したいあなたにおすすめです。

   

ConoHa VPSで運営してま🐱

 

サーバの勉強がしたいあなたにおすすめ!現役エンジニアの管理人が選んだ、WordPress運用に適したVPSの終着点

   

ConoHa VPSで爆速WordPressを作ろう! 

 

Laravel, AWS ポートフォリオ作成サポート! 定員3名

https://menta.work/plan/2381

Laravel, AWSによるポートフォリオ作成を通して、エンジニア転職をサポートします

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)