php でのオブジェクト指向開発についての議論
最近、以前に書いたクラスを修正する必要があります。各クラスは基本的にメソッドの集合であり、それは数百 K であるとは言えません。まったくオブジェクト指向です。または、それを疑似オブジェクトと呼びます。以前に作成した User クラスを例として、いくつかの疑問がある部分について説明します。
1. データベースをクエリするには、User の $db 変数を使用する必要があります。$db は、User クラスの __construct() でインスタンス化される必要がありますか?この利点は、User クラスの他のメソッドが $db 変数を直接使用できることです。欠点は、$db 変数だけでなく、User クラスの他のメソッドが $db 変数をまったく使用する必要がないことです。しかし、一部のキャッシュ オブジェクトや Web サービス オブジェクトでもこの状況が発生する可能性があります。つまり、メソッドの使用時にオブジェクトをインスタンス化する必要があるのか、それとも __construct() でインスタンス化する必要があるのかということです。それとも、この状況に対処するための設計パターンはあるのでしょうか?
2. カテゴリを分類する問題。 User クラスでは、アイテムの追加、アイテムの削除、ユーザーのアイテムのリストの表示を行うことができます。アイテムだけでなく、ポイントやお金なども含まれます。これらのほとんどはリストの追加、削除、表示です。ユーザーに配置されました。クラスには問題がないようです。すべてユーザーに関連しています。しかし、User クラスは単なるメソッドのコレクション (特にリストを表示するためのメソッド) であると常々感じています。たとえば、ポイントを例に挙げると、User クラスを継承する UserScoreMgr クラスがあります。 、そしてポイントを使用します すべての操作をこのクラスに入れた方が良いでしょうか?それとも、この問題に対処するための設計パターンはあるのでしょうか?