1

私は、多くの個別のオブジェクト (クラス) が連携して動作する必要があるプロジェクトに取り組んでいます。私は自分の問題の解決策を思いつきましたが、何かが足りない気がするので、他の視点を聞きたかっただけです。

基本的に、私は訪問者と場所のクラスを持っています。それぞれが初期化され、$visitor や $location などの変数に格納されます。両方とも、訪問者に固有のデータと、ページ呼び出しで参照されている場所を持っています。

私がしたい/する必要があるのは、本質的に「ブリッジ」を作成することです。これにより、これらのオブジェクトの両方に影響を与えるメソッドを呼び出すことができます。たとえば、$bridge->favorite(); を呼び出せるようにしたいです。そして、その場所のお気に入りの数を増やすだけでなく、そのお気に入りの参照を訪問者のプロファイルに追加します。

私が今やったことは、本質的に橋を作ったことです:

$bridge = new Bridge($locationclass, $visitorclass);
$bridge->favorite();

したがって、基本的には、私が持っている別のクラス「ブリッジ」をお気に入りのメソッドで呼び出してから、既に設定されている 2 つのクラスを使用します。これは問題ない解決策だと思いますが、より良い解決策が欠けているように感じます。

すべての入力は非常に役立ちます。お時間をいただきありがとうございます。

4

2 に答える 2

3

この種のことを行う必要がある場合、それはアプリケーションが適切に設計されていないことを意味します。

あなたの例に答えるには、訪問者のお気に入りの場所に場所を追加するだけです。
また、場所がお気に入りに追加された回数を数えたい場合は、その場所をお気に入りに追加した訪問者の数を数えます。同じ情報を 2 回保存しないでください。

于 2012-05-24T18:56:45.303 に答える
1
class Bridge{

private $classes;

function  construct($classes)
{
 $this->classes  = $classes;
}

function _call($name,$params)
{
  foreach($classes as $class)
  {
    if(method_exists($class,$name)){
     return call_user_method_array($name,$class,$params);
    }
  }else{
   ...
  }
}
于 2012-05-24T18:59:40.607 に答える