该模式主要目的在于解耦,将模块的粒度分隔的更细,便于需求的更改
类图
java实现
public interface Implementor {
public void doSomething();
public void doAnything();
}
public class RealImplementor implements Implementor {
@Override
public void doSomething() {
}
@Override
public void doAnything() {
}
}
public abstract class AbstractRole {
protected Implementor implementor;
public AbstractRole(Implementor implementor)
{
this.implementor = implementor;
}
public abstract void doSomething();
public abstract void doAnything();
}
public class RealRole extends AbstractRole {
public RealRole(Implementor implementor) {
super(implementor);
}
@Override
public void doSomething() {
super.implementor.doSomething();
}
@Override
public void doAnything() {
super.implementor.doAnything();
}
}
php实现
interface Implementor
{
public function doSomething();
public function doAnything();
}
class RealImplementor implements Implementor
{
public function doSomething()
{
echo 'doSomething';
}
public function doAnything()
{
echo 'doAnything';
}
}
abstract class AbstractRole
{
protected $implementor;
public function __construct(Implementor $implementor)
{
$this->implementor = $implementor;
}
public abstract function doSomething();
public abstract function doAnything();
}
class RealRole extends AbstractRole
{
public function __construct(Implementor $implementor)
{
parent::__construct($implementor);
}
public function doSomething()
{
$this->implementor->doSomething();
}
public function doAnything()
{
$this->implementor->doAnything();
}
}
$realRole = new RealRole(new RealImplementor());
$realRole->doSomething();
$realRole->doAnything();