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-實現/) –