1

私はより深刻な OOP (以前は継承を使用していました) に足を踏み入れていますが、私を混乱させる何かに出くわしました。

データベース接続を処理するスーパー クラスがあります。

サイトのメンバーシップ関数に関連する接続を処理するサブクラスがあります

戦略パターンを採用して、異なるが類似した機能を共存させたいと考えています。例えば:

  • データベースに接続し、新しい登録の名前と電子メールを確認します
  • データベースに接続し、登録確認のためにユーザー名と確認コードを確認します
  • データベースに接続し、ログイン用のユーザー名とパスワードを確認します
4

2 に答える 2

2

抽象クラスはPHPでスーパークラスを拡張できますか?

これ

class A {}
abstract class B extends A {}
class C extends B {}

var_dump( new C );

与える

object(C)#1 (0) {}

答えは: はい、抽象クラスは PHP のスーパー クラスを拡張できます。

タイトル更新後の編集:

はい、サブクラスがインターフェースを実装することはまったく問題ありません。ただし、戦略のコンテキストでは、抽象化をキャプチャして派生クラスに実装の詳細を埋め込むインターフェイス以外のインターフェイスでメソッドを呼び出すことはほとんどありません。http://source Making.com/design_patterns/strategyを参照してください。

于 2011-01-26T16:59:36.100 に答える
0

コードを知らなければ、これに答えるのは困難です。あなたの質問から導き出せることから、この場合、継承ではなく構成を使用する必要があると言えます。

データベース接続を組み込んださまざまな「サービス クラス」を使用して、特定の問題ドメインに関連するクエリを作成できます。それらはすべて$dbConnection、クエリを作成するために使用できるプロパティを持っています。setDbConnection($dbConnection)セッター メソッド ( ) を使用するか、さまざまなサービス オブジェクトのコンストラクターでパラメーターに直接渡すことにより、依存性注入を使用して外部からそのプロパティを設定します。

于 2011-01-26T17:06:19.383 に答える