您的位置:首页 > 编程语言 > PHP开发

php,java实现装饰者模式

2017-03-29 21:29 429 查看
当需要为现有的类增加新的功能,或则需要包装现有类时,适合使用该模式

类图:



java实现

抽象产品类

public abstract class Subject {

public abstract void doSomething();
}


产品类

public class ConcreteSubject extends Subject {

@Override
public void doSomething() {

}
}


抽象装饰者

public abstract class Decoration extends Subject{

private Subject subject = null;

public Decoration(Subject subject){
this.subject = subject;
}

@Override
public void doSomething() {
subject.doSomething();
}
}


装饰者

public class ConcreteDecoration extends Decoration {

public ConcreteDecoration(Subject subject) {
super(subject);
}

private void decorationMethods(){

}

@Override
public void doSomething() {
decorationMethods();
super.doSomething();
}
}


php实现

abstract class Subject
{
public abstract function doSomething();
}

class ConcreteSubject extends Subject
{
public function doSomething()
{
echo 'doSomething';
}
}

abstract class Decortion extends Subject
{
private $subject;

public function __construct(Subject $subject)
{
$this->subject = $subject;
}

public function doSomething()
{
$this->subject->doSomething();
}
}

class ConcreteDecortion extends Decortion
{
public function __construct(Subject $subject)
{
parent::__construct($subject);
}

public function decortionMethods()
{
echo 'decortionMethods';
}

public function doSomething()
{
$this->decortionMethods();
parent::doSomething();
}
}

$decortion =  new ConcreteDecortion(new ConcreteSubject());
$decortion->doSomething();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: