Nếu bạn đã có một lớp nhà máy tạo ra các đối tượng mới của một số loại, và rằng lớp factroy là một singleton, như thế này:Mở rộng abstract class singleton
class Database_Factory extends Base_Factory {
private static $factory;
private $objects = array();
public function __get($profile) {
// check for object and return it if it's created before
}
public static function getInstance(){
if (!self::$factory)
self::$factory = new self();
return self::$factory;
}
}
Các lặp đi lặp lại cùng một mã bất cứ lúc nào, nơi một số đối tượng cần nó riêng nhà máy. Vì vậy, tôi quyết định làm cho lớp nhà máy này trừu tượng và chỉ thực hiện các quy trình cụ thể cho từng nhà máy. Nhưng PHP không cho phép khởi tạo lớp trừu tượng.
abstract class Base_Factory {
public static function getInstance(){
if (!self::$factory)
self::$factory = new self();
return self::$factory;
}
}
Fatal error: Không thể nhanh chóng abstract class Base_Factory
bạn sẽ làm gì?
Câu hỏi cơ bản là: làm thế nào để tôi tự do bản thân mình bằng cách viết những getInstance (và có thể sau này một số chi tiết) chức năng trong mỗi nhà máy? –