ホームページ > Java > &#&チュートリアル > Java デザイン パターンのオープン原則とクローズド原則を簡単に紹介するサンプル コード

Java デザイン パターンのオープン原則とクローズド原則を簡単に紹介するサンプル コード

黄舟
リリース: 2017-03-31 10:35:10
オリジナル
2037 人が閲覧しました

この記事では主に Javaデザインパターン のオープンとクローズの原則を紹介します。これが非常に優れていると思いますので、参考として共有します。編集者をフォローして見てみましょう

前に書いてあります

最近、私は新しいビジネスを引き継いだのですが、そのシステムのアーキテクチャは注目に値します。しかし、場所によっては威圧的であり、コードによっては肥大化して保守が困難なため、人々は価値のないものになります。したがって、Java のオープンとクローズの原則に基づいて、コードの一部がリファクタリングされ、最適化されました。

まず、以前のシステムの古いコードを見てみましょう

ShareChannelManager.java

public ResultDO<String> shareChannel(int shareCode) {

  if(ShareCodeUtil.share2A(shareCode)) {
     // TODO, 分享到A渠道的业务逻辑代码
  }

  if(ShareCodeUtil.share2B(shareCode)) {
     // TODO, 分享到B渠道的业务逻辑代码
  }

  ...渠道n...
}
ログイン後にコピー

shareChannel このメソッドは、共有チャネルのメイン リンク ロジックを実行します。さまざまなチャネルで共有されるコードはクラスのメソッドで記述されますが、これは非常に肥大化して保守が困難です。共有チャネルを追加するたびに、この強力なメソッドを変更する必要があります。手が少し震えて間違えると、他のチャンネルでの共有に影響します。同時に、これは Java のオープンおよびクローズの原則にも違反します。

Javaのオープンとクローズの原則を紹介します

Javaのオープンとクローズの原則は、一見すると矛盾した印象を人々に与えます。開いているのになぜ閉まっているのですか?額面通りに受け取らないでください。 **オープン**と**クローズ**の 2 つの次元から考えてください。 Java のオープン原則は、設計されたアーキテクチャに優れたスケーラビリティがあることを意味しますが、クローズド原則は、システムのアーキテクチャの主要なリンクがビジネスの繰り返しによって大幅に変更できないことを意味します。システムのアーキテクチャに合わせて。あらゆるシステムは0から1のプロセスを経なければなりません。ビジネスが発展するにつれて、システムは変わらないこともあります。システムのアーキテクチャをいかに先進的かつスケーラブルなものにするかは、日々の開発において考慮しなければならない技術的なポイントです。 つまり、Java のオープンとクローズの原則には 2 つの特徴があります。

    - 拡張機能はオープンです
  1. - 変更はクローズされます
上記の

設計原則 に基づいて、上記の問題を最適化する方法 アイデアは、複数の共有チャネル フォームを結合することです連鎖電話。共有アクションを抽象化し、実装のためにさまざまなチャネルに配布します。

共有チャネル チェーンを定義する

public class ShareChannelChain {  
  private final Logger LOG = LoggerFactory.getLogger(this.getClass());

  /**
   * 分享渠道链
   */
  private List<ShareChannel> shareChannels;
  public ResultDO<String> share(int shareCode) {
    for (ShareChannel s : shareChannels) {
      ResultDO<String> r = s.share(shareCode);
         }
  }
ログイン後にコピー

共有チャネルの親クラスを定義する

public interface ShareChannel {
  public ResultDO<String> share(int shareCod);
}
ログイン後にコピー

A チャネル共有

public class AChannel implements ShareChannel {

  @Override
  public ResultDO<String> share(int shareCode) {
       // TODO 分享A渠道逻辑
    }
}
ログイン後にコピー

B チャネル共有

public class BChannel implements ShareChannel {

  @Override
  public ResultDO<String> share(int shareCode) {
       // TODO 分享B渠道逻辑
    }
}
ログイン後にコピー
AChannel と BChannel をコール チェーン ShareChannelChain にアセンブルします。

  <bean id="AChannel" class="com.test.AChannel">
  </bean>
  <bean id="BChannel" class="com.test.BChannel">
  </bean>
  <bean id="shareChannelChain" class="com.test.ShareChannelChain">
    <property name="shareChannels">
      <list>
        <ref local="AChannel"/>
        <ref local="BChannel"/>
      </list>
    </property>
  </bean>
ログイン後にコピー

チャネル共有のメインインターフェイス

ShareChannelManager.java

public ResultDO<String> shareChannel(int shareCode) {
    ShareChannelChain.share(shareCode);
}
ログイン後にコピー

最後に、最適化されたアーキテクチャによってもたらされる利点を確認してみましょう

新しいチャネル共有のビジネスニーズがあるとします、CChannel、私たちのことを考えてください ポイント変えられること。今回は、ShareChannelManager コア クラスのロジックを変更する必要はありません。必要なのは、CChannel を展開し、ShareChannel インターフェイスの share メソッドを実装して、それを XML で構成することだけです。この種の変更のリスクは制御可能であり、コア クラスのロジックには影響しません。

以上がJava デザイン パターンのオープン原則とクローズド原則を簡単に紹介するサンプル コードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート