>백엔드 개발 >PHP 튜토리얼 >Power Academy 디자인 패턴 PHP 비디오 튜토리얼 공유

Power Academy 디자인 패턴 PHP 비디오 튜토리얼 공유

黄舟
黄舟원래의
2017-08-30 10:18:371237검색

"파워아카데미 디자인 패턴 PHP 영상 튜토리얼"은 먼저 디자인 패턴을 소개하고, 디자인 패턴의 용도와 중요성을 알려주며, 디자인 패턴이 적용되는 경우를 자세히 설명합니다. 다음으로, 코드 예제를 통해 다양한 디자인 패턴을 소개합니다. 마지막으로 포괄적이고 심층적인 사례 분석에서는 디자인 패턴을 사용하여 새로운 애플리케이션을 계획하는 방법, 이러한 패턴을 PHP 언어로 작성하는 방법, 비디오에 소개된 디자인 패턴을 사용하여 기존 코드 블록을 수정 및 리팩터링하는 방법을 보여줍니다.

Power Academy 디자인 패턴 PHP 비디오 튜토리얼 공유

강좌 재생 주소: http://www.php.cn/course/424.html

선생님의 강의 스타일:

선생님의 강의는 간단하고 명확하며 레이어별로 진행됩니다. 레이어, 연동, 엄격한 논쟁, 엄격한 구조, 논리적 사고력을 사용하여 학생들의 관심을 끌고 이성을 사용하여 교실 교육 과정을 제어합니다. 교사의 강의를 들으면서 학생들은 지식을 배울 뿐만 아니라 사고 훈련도 받으며 교사의 엄격한 학업 태도에 영향을 받고 영향을 받습니다.

이 영상에서 더 어려운 점은 팩토리 메소드 패턴입니다. 자세히 설명되어 있습니다.

1 패턴 소개

객체 생성을 위한 인터페이스를 정의하고, 인스턴스화할 클래스를 하위 클래스가 결정하도록 하고, 팩토리 메소드를 정의합니다. 클래스의 인스턴스를 하위 클래스로 연기합니다.

2 패턴 내 역할

2.1 추상 팩토리(Creator) 역할: 팩토리 메소드 패턴의 핵심이며 애플리케이션과는 아무런 관련이 없습니다. 패턴으로 생성된 객체에 대한 모든 팩토리 클래스는 이 인터페이스를 구현해야 합니다.
2.2 Concrete Creator(Concrete Creator) 역할: 추상 팩토리 인터페이스를 구현하는 구체적인 팩토리 클래스로, 애플리케이션과 밀접하게 관련된 로직을 포함하고, 애플리케이션에서 호출되어 제품 객체를 생성합니다. 위 그림에는 두 가지 역할, 즉 BulbCreator와 TubeCreator가 있습니다.
2.3 추상 제품(Product) 역할: 팩토리 메소드 패턴에 의해 생성된 객체의 상위 유형으로, 제품 객체의 공통 상위 클래스 또는 공통 소유 인터페이스입니다. 위 사진에서 이 캐릭터는 라이트입니다.
2.4 구체적인 제품 역할: 이 역할은 추상 제품 역할에 의해 정의된 인터페이스를 구현합니다. 특정 제품은 특정 공장에서 생산되며, 이들 사이에는 일대일 대응이 이루어지는 경우가 많습니다.

PHP 소스 코드 디자인

<?php  
/** 
 * 工厂方法。由于简单工厂违背了开发-封闭原则 
 * 工厂方法。将这个改变放到了客户端 
 * copyright (c) http://blog.csdn.net/CleverCode     
 */  
  
// 运算抽象类    
class Operation  
{  /*{{{*/  
  
    // 数字A    
    protected $_numberA = null;    
  
    // 数字B    
    protected $_numberB = null;    
  
    /**  
     * 设置成员A  
     *  
     * @param double $num 数字  
     * @return void  
     */    
    public function setNumberA($num){    
        $this->_numberA = $num;    
    }    
  
    /**  
     * 获取成员A  
     *  
     * @return double 数字  
     */    
    public function getNumberA(){    
        return $this->_numberA;    
    }    
  
    /**  
     * 设置成员B  
     *  
     * @param double $num 数字  
     * @return void  
     */    
    public function setNumberB($num){    
        $this->_numberB = $num;    
    }    
  
    /**  
     * 获取成员B  
     *  
     * @return double 数字  
     */    
    public function getNumberB(){    
        return $this->_numberA;    
    }    
  
    /**  
     * 获取运算结果  
     *  
     * @return double 数字  
     */    
    public function getResult(){    
        return null;    
    }    
}  /*}}}*/  
  
// 加法类    
class OperationAdd extends Operation  
{  /*{{{*/  
  
    /**  
     * 获取运算结果  
     *  
     * @return double 数字  
     */    
    public function getResult(){    
        return $this->_numberA + $this->_numberB;    
    }    
}  /*}}}*/  
  
// 减法类    
class OperationSub extends Operation  
{  /*{{{*/  
  
    /**  
     * 获取运算结果  
     *  
     * @return double 数字  
     */    
    public function getResult(){    
        return $this->_numberA - $this->_numberB;    
    }    
}  /*}}}*/  
  
//运算工厂  
interface IFactory  
{/*{{{*/  
    public function createOperate();  
}/*}}}*/  
  
//加法工厂  
class AddFactory implements IFactory  
{/*{{{*/  
  
    public function createOperate()  
    {  
        return new  OperationAdd();   
    }  
}/*}}}*/  
  
//减法工厂  
class SubFactory implements IFactory   
{/*{{{*/  
    public function createOperate()  
    {  
        return new OperationSub();   
    }  
}/*}}}*/  
  
class Client   
{/*{{{*/  
    public static function main($argv)  
    {  
       //简单工厂的switch case 放到了客户端了  
       $factory = new AddFactory();  
       $add = $factory->createOperate();  
       // 设置数字A    
       $add->setNumberA(5);    
            
       // 设置数字B    
       $add->setNumberB(2);    
            
       // 运算    
       echo $add->getResult()."\r\n";     
           
    }  
}/*}}}*/  
  
Client::main($argv);  
  
?>

위 내용은 Power Academy 디자인 패턴 PHP 비디오 튜토리얼 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.