デザインパターンの「外観モード」

アピアランスモードとは

ファサード モードは構造設計モードであり、サブシステムに統一インターフェイスを提供して複雑な内部構造を簡素化し、クライアントがサブシステムの機能により便利にアクセスできるようにします。

アピアランスモードを使用する理由

システムの内部構造が比較的複雑な場合、またはシステムの複数のモジュール間に強い結合がある場合、アピアランス モードを使用すると、システムの複雑さをサブシステムの背後に隠すことができ、それによってシステムの複雑さが軽減され、システムの保守と拡張が容易になります。
仕事のどこで使用されます Android を例に挙げます
Android では、外観モードは次のようなさまざまなコンポーネント間の対話に広く適用できます。

  1. アクティビティとフラグメントの間の相互作用。
  2. フラグメントとフラグメントの間の相互作用。
  3. サービスとアクティビティまたはフラグメント間の相互作用。
  4. さまざまなビュー間の対話。

デザインのアイデア

ファサード パターンを使用する場合、すべてのサブシステムの複雑さをカプセル化し、クライアントにシンプルなインターフェイスを提供するファサード クラスを定義する必要があります。
このファサード クラスでは、すべてのサブシステムのクラスを参照し、それらのメソッドをカプセル化できるため、クライアントは単純な呼び出しを通じてすべてのサブシステムにアクセスできます。

コード

Android では、次のメソッドを使用してファサード モードを実装できます。
1. ファサード クラスを定義します (例: MyFacade)。

public class MyFacade {
    
    

    private Activity mActivity;
    private Fragment mFragment;
    private Service mService;

    public MyFacade(Activity activity) {
    
    
        mActivity = activity;
    }

    public MyFacade(Fragment fragment) {
    
    
        mFragment = fragment;
    }

    public MyFacade(Service service) {
    
    
        mService = service;
    }

    public void doSomething() {
    
    
        if (mActivity != null) {
    
    
            // 执行Activity相关的操作
        }

        if (mFragment != null) {
    
    
            // 执行Fragment相关的操作
        }

        if (mService != null) {
    
    
            // 执行Service相关的操作
        }
    }
}

2. サブシステムを使用する必要がある場合は、MyFacade クラスを使用してサブシステムの複雑さをカプセル化します。

public class MainActivity extends AppCompatActivity {
    
    

    private MyFacade mFacade;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mFacade = new MyFacade(this);

        // 使用MyFacade来调用子系统的方法
        mFacade.doSomething();
    }
}

要約する

ファサード パターンは、システムの複雑さを軽減できるデザイン パターンであり、クライアントにシンプルなインターフェイスを提供し、サブシステムの複雑さをサブシステムの背後に隠します。Android 開発では、外観モードを使用してさまざまなコンポーネント間の対話を簡素化し、システム全体の保守と拡張を容易にすることができます。

おすすめ

転載: blog.csdn.net/weixin_45112340/article/details/129893296