問:與多個上下文
是否有用於處理在不同的上下文中的對象的優選設計模式?例如:如果我需要從數據庫中獲取用戶,那麼該對象需要才能擁有一個id和一個特權級別。但是,如果我想創建一個新用戶進行註冊,那麼它不需要一個id,因爲這將通過auto_increment添加到數據庫中。來賓用戶不需要身份證,但應具有「來賓」的用戶名。
嘗試的解決方案
使用構造似乎忽略上下文。
爲registered_user,new_user和guest_user創建新對象似乎很浪費。
在用戶對象內創建可用於以獨特方式初始化它的方法是誘人的。
截至目前,我認爲我應該創建一個單獨工廠,具有以下功能:create_guest($ X),create_new_user($ X,$ Y),create_registered_user($ X,$ Y,$ Z)?這將允許用戶對象有一個目的:持有一個用戶(同時允許它有一個構造函數來建立一個最低要求),並且還有一個用戶工廠,其唯一目的是:啓動不同類型的用戶。
請原諒任何無知,只是尋找最佳的設計模式來處理獨特的上下文中的同一個對象。
例子:
<?php
class user
{
private id;
private username;
private privilege;
public function __construct()
{
some code...
}
public function is_admin()
{
some code...
}
}
?>