PHP 디자인 모드 - 장식자 모드
는 구조형 모델로 한 대상에게 동태적으로 추가 직책을 추가한다.기능을 추가하는 데 있어서, Decorator 모드는 하위 클래스를 생성하는 것보다 더욱 유연하다.장식 모델은 고객에게 투명한 방식으로 한 대상에게 동태적으로 더 많은 직책을 부가하는 것이다.클라이언트가 대상이 장식 전과 장식 후의 차이를 느끼지 않는다는 것이다.장식 모델은 더 많은 자류를 창조하는 것을 사용하지 않고 대상의 기능을 확장할 수 있다.
주역
적용성
//
abstract class Beverage()
{
private $description = 'Unknown Beverage';
public function getDescription()
{
return $description;
}
abstract public function double cost();
}
// 1
class Espresso extends Beverage
{
public function __construction()
{
$this->description = "Espresso";
}
public function cost()
{
return 1.99;
}
}
// 2
class HouseBlend extends Beverage
{
public function __construction()
{
$this->description = "HouseBlend";
}
public function cost()
{
return 0.89;
}
}
//
abstract class CondimentDecorator extends Beverage
{
protected $beverage;
public function __construct(Beverage $beverage)
{
$this->beverage = $beverage;
}
abstract public function getDescription();
}
// 1
class Mocha extends CondimentDecorator
{
public function getDescription()
{
return $this->beverage->getDescription.", Mocha";
}
public function cost()
{
return .20 + $this->beverage->cost();
}
}
테스트
$expressoWithMocha = new Mocha(new Espresso());
$expressoWithMocha->getDescription();
$expressoWithMocha->cost();
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.