1

外部ライブラリのクラスA、Bがあり、クラスA2はAを拡張し、B2はBを拡張します。クラスA2とB2のコードはまったく同じです。共有できますか?コードはいくつかの仕事をし、親関数を呼び出します:

class A2 extends A
{
  function func1($var1, $var2,...)
  {
     ...
     ... Do some job
     ...
     return parent::func1($var1, $var2,...);
  }
  function func2($var1, $var2,...)
  {
     ...
     ... Do some job
     ...
     return parent::func2($var1, $var2,...);
  }
  ...
  ...
  ...
}

class B2 extends B
{
  function func1($var1, $var2,...)
  {
     ...
     ... Do some job
     ...
     return parent::func1($var1, $var2,...);
  }
  function func2($var1, $var2,...)
  {
     ...
     ... Do some job
     ...
     return parent::func2($var1, $var2,...);
  }
  ...
  ...
  ...
}

私はPHP5.2.xで立ち往生しており、allow_url_include=off(顧客の制限のために)、

4

2 に答える 2

0

これを別の方向から見るのは良い考えのようです。クラスAとBのコードは異なりますが、A2とB2のコードは同じであるため、そのコードのチャンクをCと呼びます。必要なのはクラスA2とB2で、A2にはAとCの機能があります。 B2にはBとCの機能があります。CをAとBのスーパークラスにすることはできますか?次に、コードを複製せずに、これら2つのクラスを直接使用します。

于 2012-10-31T14:36:16.573 に答える
0

A2 と B2 がまったく同じである場合は、既存のクラスを拡張するのではなく、それを独自のクラスに変換します。次に、そのクラスのオブジェクトを、他のオブジェクトが実際に使用する必要があるものに渡すことができます。

参照:戦略パターン

于 2012-10-31T14:21:07.447 に答える