我试图实现类似下面的类图的系统.
我想定义一个接口,一个实现部分接口的基类,以及实现接口其余部分的子类.
有没有办法可以做到这一点?我在C#中尝试了这个,但编译器抱怨基类没有完全实现接口.如果可能的话,我想要一个适用于C#和PHP的解决方案

该解决方案适用于C#和PHP,它既可以创建基类,也可以创建未在其中实现的方法abstract.这是PHP版本:
interface IStep
{
public function name();
public function log();
public function run();
public function undo();
}
abstract class BaseStep implements IStep
{
public function name() {}
public function log() {}
abstract public function run();
abstract public function undo();
}
Run Code Online (Sandbox Code Playgroud)
特别是在PHP中,您还可以选择使用特征而不是基类.在这种情况下,这似乎不是一个好的设计,但它可以派上用场:
trait BaseStep
{
public function name() {}
public function log() {}
}
class StepOne implements IStep
{
use BaseStep;
public function run() {}
public function undo() {}
}
Run Code Online (Sandbox Code Playgroud)