php 디자인 모델 의 공장 방법 모델 분석[스타 크 래 프 트 게임 사례]

본 논문 의 사례 는 phop 디자인 모델 의 공장 방법 모델 을 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
PHP 매 뉴 얼 에 언급 된 공장 모델 은 단순 공장 모델 이다.간단 한 공장 모델 의 확장:공장 방법 모델 에 대해 논의 합 니 다.
해결 해 야 할 문제:간단 한 공장 에서 동태 적 으로 서로 다른 유형의 대상 으로 돌아 가 는 문 제 를 해결 하지만 실제 상황 에서 한 대상 을 새로 만 들 때 추가 처 리 를 해 야 한다.예 를 들 어 기관총 병 을 만 들 때 수정 광 이 50 보다 큰 지 판단 해 야 하고 화염 병 을 만 들 때 수정 광 이 50 보다 큰 지,화기광 이 25 보다 큰 지 판단 해 야 한다.그리고 연구원 을 지 었 는 지이 코드 들 을 모두 공장 제조 류 에 넣 으 면 제조 류 가 비대 해 지고 공장 에서 생산 하 는 대상 의 종류 가 많아 지면 서 공장 제조 류 의 코드 는 유지 하기 어려워 질 것 이다.
사고:간단 한 공장 모델 중의 공장 류(병종 제조 기의 류)는 변 하지 않 고 제조 인 터 페 이 스 를 추가 하여 실제 제조 대상 의 방법 을 정의 한 다음 에 서로 다른 대상 을 구체 적 으로 제조 하 는 공장 을 정의 하 는 동시에 이런 공장 에 이 제조 인 터 페 이 스 를 집행 하여 이런 공장 들 이 실제 제조 대상 을 실현 하 는 방법 을 집행 하도록 요구한다.
공장 방법 모델 예시:
우 리 는 기관총 병과 기관총 병 을 만 드 는 코드 를 파일 에 넣 었 습 니 다.Marine.phop 의 코드 는 다음 과 같 습 니 다.

<?php
  //    
  class Marine
  {
    //        
    public function attack()
    {
      echo 'Marine attack';
    }
  }
  //       ,    abstractCreator
  class MarineCreator implements abstractCreator
  {
    //          
    public function realCreate()
    {
      //       50,        ,      ore    ,        50   
      if($ore>50)
      {
        return new Marine();
      }
    }
  }
?>

우 리 는 화염 병 류 와 화염 병 류 를 만 드 는 코드 를 파일 에 넣 었 습 니 다.Firebat.php 의 코드 는 다음 과 같 습 니 다.

<?php
  //    
  class Firebat
  {
    //        
    public function attack()
    {
      echo 'Firebat attack';
    }
  }
  //       ,    abstractCreator
  class FirebatCreator implements abstractCreator
  {
    //          
    public function realCreate()
    {
      //       50      25,         。        ,      ore gas Academy  ,            
      if($ore>50 && $gas>25 && Academy>1)
      {
        return new Firebat();
      }
    }
  }
?>

주 파일 의 내용 은 다음 과 같 습 니 다.

<?php
  //             
  interface abstractCreator
  {
    //              
    public function realCreate();
  }
  //       ,      
  class BarracksCreator
  {
    //       
    public create($createWhat)
    {
      //       ,               
      require_once($createWhat.'.php');
      //       ,                 
      $creatorClassName = $createWhat.'Creator';
      //        
      $creator = new $creatorClassName;
      //          ,           。          abstractCreator,         realCreate()
      return $creator->realCreate();
    }
  }
  //           
  $creator = new BarracksCreator();
  //              
  $troop1 = $creator->create('Marine');
  $troop1->attack();
  //              
  $troop2 = $creator->create('Firebat');
  $troop2->attack();
?>

용도 총화:공장 방법 모델 은 신 설 대상 의 임 무 를 해당 하 는 구체 적 인 공장 류 에 줄 것 이 며,일부 생산 대상 이 추가 처 리 를 해 야 하기 때문에 대외 의 주요 공장 을 수정 할 필요 가 없다.
실현 총화:매개 변 수 를 받 아야 하 는 주요 공장 류,예 를 들 어 상기 병종 제조 기 BarracksCreator 는 구체 적 인 제조 방법 을 설명 하 는 인터페이스 도 필요 하 다.예 를 들 어 상기 abstractCreator 를 설명 한 다음 에 각 제품 을 구체 적 으로 생산 하 는 구체 적 인 공장 류 를 정의 하고 모든 구체 적 인 공장 류 는 반드시 인터페이스 abstractCreator 를 집행 해 야 한다.그러면 그들 은 반드시 제조 대상 의 방법 을 실현 해 야 한다.예 를 들 어 위의 realCreate().사용 할 때 파 라 메 터 를 주 공장 류 공장 의 생산 방법 create()에 전달 한 다음 에 create()가 파라미터 에 따라 구체 적 인 공장 류 의 대상 을 생 성하 고 구체 적 인 공장 류 realCreate()를 호출 하여 제조 한 제품 대상 을 얻 고 돌아 와 외부 에 사용 하면 주 공장 류 공장 을 호출 하여 생산 하면 된다.
설명:사실 이 글 안의 공장 방법 모델 은 일부 글 과 달리 표준 적 인 공장 모델 은 위의 인터페이스 abstract Creator 를 추상 적 인 유형 으로 대체 한 다음 에 모든 구체 적 인 공장 류 를 계승 하 게 하지만 사용 할 때 추상 류 는 예화 되 지 않 기 때문에 코드 에서 직접 new FirebatCreator()를 사용한다.그러나 간단 한 공장 모델 은 직접적인 new 문 제 를 해결 할 수 있 기 때문에 저 는 간단 한 공장 모델 과 공장 방법 모델 을 함께 사용 하여 이곳 의 예 를 더욱 실 용적 으로 만 들 겠 습 니 다.또한 PHP 는 단일 계승 이 고 실행 인터페이스의 수량 은 제한 이 없 기 때문에 인터페이스 abstractCreator 를 사용 하 는 것 이 더욱 유연 합 니 다.
더 많은 PHP 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 논문 에서 말 한 것 이 여러분 의 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기