この記事では主に 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 つの特徴があります。
- - 拡張機能はオープンです
- - 変更はクローズされます
設計原則 に基づいて、上記の問題を最適化する方法 アイデアは、複数の共有チャネル フォームを結合することです連鎖電話。共有アクションを抽象化し、実装のためにさまざまなチャネルに配布します。
共有チャネル チェーンを定義する
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);
}
public class AChannel implements ShareChannel {
@Override
public ResultDO<String> share(int shareCode) {
// TODO 分享A渠道逻辑
}
}
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>
チャネル共有のメインインターフェイス
public ResultDO<String> shareChannel(int shareCode) { ShareChannelChain.share(shareCode); }
最後に、最適化されたアーキテクチャによってもたらされる利点を確認してみましょう
新しいチャネル共有のビジネスニーズがあるとします、CChannel、私たちのことを考えてください ポイント変えられること。今回は、ShareChannelManager コア クラスのロジックを変更する必要はありません。必要なのは、CChannel を展開し、ShareChannel インターフェイスの share メソッドを実装して、それを XML で構成することだけです。この種の変更のリスクは制御可能であり、コア クラスのロジックには影響しません。
以上がJava デザイン パターンのオープン原則とクローズド原則を簡単に紹介するサンプル コードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
