2
我想要一个类的版本控制系统,它允许一个系统与另一个系统进行通信,以便任何未来的更改不会影响已经存在的内容。将一个类转换为另一个类
让我们假设系统A和系统B通过RPC调用相互通话。业务需求的变化和系统A和B需要为未来的发展,同时向后兼容
下将工作进行更改:
class base_version
{
public static function getVersion($version = 1)
{
$versionClass = 'version_'.$version;
return new $versionClass();
}
}
class version_1
{
public function sayHello()
{
echo "Hello version 1\n";
}
}
class version_2
{
public function sayHello()
{
echo "Hello version 2\n";
}
}
$obj = base_version::getVersion();
$obj->sayHello();
$obj = base_version::getVersion(2);
$obj->sayHello();
我不喜欢但是静态实例化。我想要做的是这样的事情,除非我知道你不能重新分配$this
。
class base_version
{
public function __construct($version)
{
$versionClass = 'version_'.$version;
$this = new $versionClass();
}
}
$obj = new base_version();
$obj->sayHello();
$obj = new base_version(2);
$obj->sayHello();
我该如何做到这一点?
接口是理想的,因为它们定义了一个没有实现细节的'合同'。虽然'抽象类'在一些圈子中也被认为是'接口'。一些信息:[design-pattern-principles-for-php-program-to-an-interface-not-an-implementation](http://www.php5dp.com/design-pattern-principles-for-php-program -to-AN-接口不-AN-实现/) –