2

(ここで最初から間違った方向に進んでいる可能性があるため、質問のタイトルを編集する必要があるかもしれません...)

e コマース アプリの場合、StoreBase CFC と、アプリ内の StoreCheckout、StoreCart、およびその他のモジュール/オブジェクトの「サブクラス」CFC があります。

一部のクライアントにはモジュール固有のビジネス ロジックがあるため、必要に応じてカスタム機能を備えた CFC を作成します。たとえば、StoreCartClientX は StoreCart を拡張し、一部の計算をオーバーライドします。

一部のクライアントにはカスタムのベース ビジネス ロジックもあります。たとえば、StoreBaseClientX は StoreBase を拡張し、カスタム ルールに基づいてアプリの特定の部分へのアクセスを制限します。

私の問題は、StoreBaseClientX が存在するときに StoreCart に StoreBaseClientX を拡張するように指示する方法が必要であることです。これには、動的な拡張が必要であり、SO のさまざまな投稿 (信頼に基づく) に基づいて悪い考えのように思えます (いずれにせよ、私はColdFusion を使用して (どうぞ、笑ってください)、動的な表現は拡張に使用できません)。

問題を説明するための疑似コードを次に示します。

public class StoreBase {
    checkRights(){
      //standard rights check
    }

    findWishList(){
   }
}

public class StoreBaseClientX extends storeBase {
       checkRights(){
         //custom rights check for ClientX
       }
}


   public class StoreCart extends StoreBase { //if StoreBaseClientX exists, it should extend that instead


   }
4

3 に答える 3

0

まず、使用している継承モデルStoreCheckoutStoreCart拡張の両方がStoreBase正しいですか? であると同時にであるStoreBaseと言えるようなものであるとは私には思えません。両方のメソッドの例は何ですか? あなたは確かで、それぞれが持っているようなものであってはなりません(つまり、オブジェクトは他のクラスが初期化されたものです)?StoreCheckout StoreBaseStoreCart StoreBaseStoreCheckoutStoreCart StoreBaseStoreBase

とにかく、それは考えるべきことであり、あなたの問題に接しています. よろしければ、 Code Reviewに何かポップして、私たちに見てもらいませんか?

ラスが言うように、私は物事を少し好転させます。クライアント固有のサブコンポーネントが存在するかどうかを調べて、存在する場合は基本コンポーネントの代わりにそれを使用する代わりに、常にクライアントでカスタマイズ可能なサブコンポーネントを用意し、コードでそれらを常に参照する必要があります。基本コンポーネントではありません。

要するに、extendsColdFusion のコンポーネントに動的/ランタイム属性を設定することはできません。コンパイル時に存在する必要があります。

于 2013-08-15T06:49:08.397 に答える