Java设计模式

索引

    1. 设计模式说明

 

    1. 外观模式

 

    1. 策略模式

 

    1. 设计模式概述

 

    参考文献

设计模式(概述)

    • GoFという頭のいい人が考えた全23パターン

対象はオブジェクト指向言語
他にもいくつかの種類がある

Javaの機能を活用して(主に)拡張性の向上を図っている

継承
ポリモーフィズム
カプセル化など

優秀なベテランはこう考えている!という考え方集

具体的な実装方法ではない
考え方を理解して自分のプログラムに応用


设计模式的有效应用

    • 考え方を応用して自分のソースに反映する

≠パターンに合わせて実装する

効果が期待できる場合のみ使う

≠可能な限り適用する
≠デザインパターンの効力を妄信する
無理に使うと逆効果

状況に合わせて柔軟に適用判断する

≠設計時に適用判断をしたのでプログラムに絶対に反映する


设计模式的优点和缺点

好处

    1. 提高可扩展性——充分利用面向对象编程

 

    1. 提高重用性——充分利用面向对象编程

 

    1. 提高可读性——充分利用面向对象编程和共同理解

 

    提高传输速度——共同理解

弊端(问题点/风险)

    1. 现有思想和机制之间的脱节(部分)

 

    1. 生产力下降

 

    1. 对模式的坚持

 

    1. 代码复杂化

 

    由于解释差异导致的误解和无谓的争议(由于抽象性)

设计模式(应用时机)

    • クラス設計時

 

    • リファクタリング時

 

    • レビュー時

レビュアーへの説明時間の短縮

双方がパターンを知っている場合のみ

プログラミング調査時

読み解き時間の短縮
予測精度の向上

パターンを知っている場合のみ

プログラミング修正時


这次我们要讨论的有两种情况。

    • 以下の観点でピックアップ

理解が容易
活用が容易
一定の効果が見込める
身近に例がある

    1. 外观模式

 

    策略模式

外观模式(简述)

    • 複雑な処理の流れをクライアントの代わりに担うクラスを作成

 

    • クライアント側はFacadeクラスを呼ぶだけで複雑な処理が可能

クライアント側の処理がシンプルに

一般的に最も使用されているパターンで、ある程度無意識に仕様
リファクタリングにも非常に有用


门面模式(使用条件)

    • 一連の処理で様々なクラスのそっどを呼ぶ必要がある

 

    多数のクライアントから呼ばれる一般的な処理である

外观模式(登场角色)

    • Client

複雑な処理を実行したいクラス群
Facadeクラスを呼び出す

Facade

複雑な処理呼び出しを引き受けるクラス
実クラス群を呼び出す

実クラス群

複雑な処理の一部分を引き受けるクラスの集まり
Facadeクラスに必要なタイミングでそれぞれ呼ばれる


外观模式(形象)

図1.png

外观模式(优缺点)

优点

    1. 简化客户的操作以提高可读性

 

    1. 简化操作的添加、修改和删除

 

    简化客户的添加和删除

缺点

    不需要的Facade类的批量生产

外观模式(总结)

    • 複雑な処理をまとめて一つのクラスで実施

 

    • クライアント側と処理の追加が容易になる

 

    • 割と簡単に適用できる

 

    用途を絞らないと無駄なクラスが増えて逆効果

策略模式(概述)

    • 条件分岐で処理を切り替えている部分をサブクラス化

 

    • 条件増加時の既存ソースへの追加が最小限

 

    Stateパターンと酷似

策略模式(角色)

    • Strategy

戦略を利用するためのインターフェース
処理の種類定義と型の再利用を担う

ConcreteStrategy

Strategyの実装
実際の処理を担う

Context

Strategyを利用するクラス
Strategy型の変数を持つ
Strategy型の処理を呼び出すが実態は把握しない

Client

ContextにStrategyの型を渡す
Contextの処理を呼び出す


策略模式(应用条件)

    • 条件分岐で類似処理を呼び出している

 

    将来的に条件の増減が見込まれる

策略模式(未使用时的形象)

図2.png

策略模式(形式和使用时机)

図3.png

策略模式(利与弊)

优势

    1. 在增加Class时,影响范围明确

不需要修改现有处理,因此易于了解整个程序的处理流程。 缺点(风险):由于强行适用,代码变得复杂。


策略模式(总结)

    • 条件分岐で類似処理が走る場合に使用

 

    • 既存ソースの影響範囲が絞れる

 

    • Facadeよりちょっと面倒で複雑

 

    処理の追加が見込まれない場合は労力の方が大きい

设计模式(总结)

    • オブジェクト指向を活用して拡張性と再利用性を高めよう

 

    • 可読性も上がる(こともある)

 

    • そのまま使うのではなく考え方を当てはめる

組み合わせも可

〇〇パターンで!だけで通じると意思伝達が早くて楽
元がざっくりしたものなので解釈の違いがある

今回読んだ本でも解釈が異なるものがあった

やりすぎると労力&工数の無駄


引用文献(尊称省略)

    • Java言語で学ぶデザインパターン

著者:結城 浩

Javaデザインパターン徹底攻略

著者:日本ソフトウェアエンジニアリング(株)

リファクタリング 既存のコードを安全に改善する

著者:Martin Fowler
訳 :児玉公信・友野昌夫・平澤章・梅澤貴史

事例で学ぶデザインパターン

著者:福田 直樹
URL:https://www.ogis-ri.co.jp/otc/hiroba/technical/DesignPatternsWithExample/

劇的ビフォ◯アフターで学ぶデザインパターン

著者:karoten512
URL:http://karoten512.hatenablog.com/entry/2017/10/21/134048

广告
将在 10 秒后关闭
bannerAds