>  기사  >  백엔드 개발  >  PHP 디자인 패턴: PHP 팩토리 패턴 소개(코드 포함)

PHP 디자인 패턴: PHP 팩토리 패턴 소개(코드 포함)

不言
不言원래의
2018-08-04 14:24:351858검색

이 글의 내용은 PHP 디자인 패턴에 관한 것입니다: PHP 팩토리 패턴(코드 포함)에 대한 소개입니다. 필요한 친구들이 참고할 수 있기를 바랍니다.

팩토리 패턴은 클래스의 인스턴스화 세부 사항을 숨기는 방법으로, 일련의 클래스에 대해 동일한 인스턴스화 방법을 사용하면 동일한 인터페이스를 구현하는 더 많은 클래스에 대한 객체를 생성하는 방법을 쉽게 확장할 수 있습니다.
예제 적용 시나리오는 다음과 같습니다.
1) 온라인 결제
WeChat 결제, Alipay 결제, UnionPay 결제 등 다양한 결제 방법이 있습니다. 해당 결제 방법은 사용자의 선택에 따라 채택됩니다.
2) 방문 통계
In; 비즈니스 더 복잡한 프로젝트에서 사용자는 기사 액세스, 작성자 액세스, 기사 디렉토리 액세스 등과 같은 다양한 개체에 액세스합니다. 동일한 액세스 기록이 기록되지만 기록된 정보는 다릅니다

공장 모델의 원리:
먼저 , 여러 개체를 기반으로 동일한 동작으로 인터페이스를 설계하고, 이러한 클래스가 이 인터페이스를 구현하도록 한 다음, 다양한 매개변수에 따라 다양한 클래스를 인스턴스화할 수 있는 인스턴스화 팩토리를 생성합니다.

공장 패턴의 구체적인 구현:

/*
 *  形状接口
 */interface Shape{
    public function area();}/*
 * 长方形类,实现了形状接口
 */class Rectangle implements Shape{
    private $long;    private $width;    function __construct($long,$width)
    {
        $this->long = $long;        $this->width = $width;
    }    /*
     * 实现面积方法
     */
    public function area()
    {
        // TODO: Implement area() method.
        return $this->long * $this->width;
    }
}/*
 * 正方形类,实现了形状接口
 */class Square implements Shape{
    private $width;    function __construct($width)
    {
        $this->width = $width;
    }    /*
     * 实现面积方法
     */
    public function area()
    {
        // TODO: Implement area() method.
        return pow($this->width,2);
    }
}/*
 * 圆形类,实现了形状接口
 */class Circle implements Shape{
    private $radiu;    function __construct($radiu)
    {
        $this->radiu = $radiu;
    }    /*
     * 实现面积方法
     */
    public function area()
    {
        // TODO: Implement area() method.
        return pi()*pow($this->radiu,2);
    }
}class ShapeFactory{
    /*
     * 获取实例化的形状对象
     * ...$args 表示接受不限个数的参数
     */
    public function getShpae(...$args)
    {
        /*
         * 第一个参数为形状名,后面的参数为形状的尺寸
         */
        switch($args[0])
        {            case 'Rectangle':                return new Rectangle($args[1],$args[2]);            break;            case 'Square':                return new Square($args[1]);            break;            case 'Circle':                return new Circle($args[1]);            break;
        }        return null;
    }
}$factory = new ShapeFactory();$shape = $factory->getShpae('Rectangle',2,3);$area[] = $shape->area();$shape = $factory->getShpae('Square',2);$area[] = $shape->area();$shape = $factory->getShpae('Circle',2);$area[] = $shape->area();
print_r($area);/*
Array
(
    [0] => 6
    [1] => 4
    [2] => 12.566370614359
)
*/

추천 관련 기사:

PHP에서 파일의 첫 번째 수준 디렉터리를 가져오는 방법(순수 코드)

위도와 경도를 사용하여 사이의 거리를 계산하는 방법 PHP의 두 점(순수 코드) )

위 내용은 PHP 디자인 패턴: PHP 팩토리 패턴 소개(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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