ホームページ > バックエンド開発 > PHPチュートリアル > オブジェクト指向の分析と設計に関する質問

オブジェクト指向の分析と設計に関する質問

WBOY
リリース: 2016-06-23 13:44:58
オリジナル
913 人が閲覧しました

皆さん、こんにちは。私はしばらくオブジェクト指向に触れてきましたが、新しいシステムを設計するたびに、オブジェクトをどのように分割して設計するかという問題に遭遇します。アドバイスを求めにここに来ました。
たとえば、現在のシステム要件には、ユーザー、ロール、ポイントが含まれます。
ユーザーは、ユーザー名、パスワードを持っています。
登場人物には次のものが含まれます: キャラクター名。
ポイントには、ポイント値、ポイントが属するユーザー、およびポイントが属するモジュールが含まれます。

オンラインの投稿を読んで、次のように思います。
ユーザー オブジェクトには、ユーザー名、パスワード、ロール オブジェクト、ポイント オブジェクトが含まれている必要があります。
コード:
class User {
public $username;
public $role; public $score;
}

これはそのように設計されていますか?しかし、私はいつも何かが間違っていると感じています。おそらく、ユーザーオブジェクトを取得する必要があるときに、ロールオブジェクトとポイントオブジェクトを使用していないのではないかと思います。ユーザーオブジェクトを取得して、ユーザーの対応するロールを取得します。この設計は合理的ですか?

ディスカッションに返信(解決策)

ロールとポイントをユーザー属性として使用する場合、将来新しい要素が追加された場合、コードを修正する必要はありませんか?その場合、ユーザー オブジェクトは非常に大きくなります。

ただし、属性として使用されない場合、ロールとポイントは確かにユーザーによって所有されます。


最初のデザインに問題はありません。それは死ぬほど書かれています

そして、2番目のオプションははるかに柔軟です

ユーザーをロールに渡すか、ロールをユーザーに渡すかについては、デザインモードの選択の問題です

ポイントは別のクラスに割り当てることができます。やれ 。

スコアを追加および変更するだけで済み、他のデータを扱う必要はありません。たとえば、


class score{    private $_oUser;    public function __construct($oUser){        $this->_oUser = $oUser;    }    public function add(){    }    public function update(){   }}
ログイン後にコピー


それはニーズによって異なります。

お二人ともご返信ありがとうございます。モデレータさんのおっしゃる通り、オブジェクト指向についての知識がまだまだ不足しているので、オブジェクト指向についての理解を深めたいと思い、デザインパターンに関する記事を読んでいます。

仕事中にチャットしますか?


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート