デザインパターン

【デザインパターン】【GoF】【Java】プロトタイプ(Prototype)パターン / Cloneableインターフェース

プロトタイプ(Prototype)パターン * 説明については以下の関連記事を参照のこと。 http://blogs.yahoo.co.jp/dk521123/31326714.html Cloneableインターフェース * Java で、プロトタイプパターン(オブジェクトのクローン)を実装するには、 Cloneableイ…

【PofEAA】 関連テーブルマッピング(AssociationTableMapping) パターン

関連テーブルマッピング(Association Table Mapping) パターン * 多対多の関連を持つテーブル間を外部キーを持つテーブルとして、関連を保存する 具体的には 別に難しいことじゃない(具体例を見れば理解できる) ■ 多対多(Many-to-Many)関係例 +----------…

【PofEAA】DataMapperパターン

DataMapperパターン * モデルとデータベースの間を取りなすMapperという中間的な構造を持っている サンプル DBテーブル/PostgreSQL person CREATE TABLE person ( id character(8) NOT NULL, name character varying(100), sex character(1), updatedate tim…

【デザインパターン】【GoF】【Java】Observerパターン ~Observableクラス / Observerインターフェース ~

Observerパターンについて * Javaには、以下のクラスが事前に用意されている 1) java.util.Observableクラス 2) java.util.Observerインターフェース ※ 使用する場合は、java.util.Observableクラスを継承する必要がある。 そのため、観察対象のクラスが、既…

【デザインパターン】【GoF】【Java】Chain of Responsibilityパターン ~ 責任の連鎖 ~

Chain of Responsibility パターン * 要求に対する処理が完了するまで、要求を受信する複数のオブジェクトをチェーン状につなぎ、 要求を引き続いて処理していくデザインパターン ⇒ プログラム初心者に、実装してもらう時に使えそう * 以下のサイトの例「結…

【デザインパターン】【GoF】【Java】Adapterパターン

サンプル 委譲を利用した Adapter パターン http://blogs.yahoo.co.jp/dk521123/33200578.html で利用したjava.util.loggingを題材として使う ILogger.java public interface ILogger { public void writeError(String value); public void writeWarning(Str…

【PofEAA】Patterns of Enterprise Application Archtecture ~目次~

エンタープライズアーキテクチャ * Patterns of Enterprise Application Architecture(PofEAA) * 企業における組織や業務プロセス、情報システムを見直し、標準化・最適化したもの 個人的な意見 * 今まで自分の経験した中で自然に使ってたものや特に特別なパ…

【デザインパターン】【GoF】【Java】Builder パターン ~構築者~

Builder パターン * 多くの構成要素からなるオブジェクトを組み立てるための部品を返す 登場人物 Builder(建築者) * 建築過程の各メソッドのインタフェース ConcreteBuilder(具体的な建築者) * Builderクラスの実装と、Productオブジェクトを取り出すメソッ…

【デザインパターン】【GoF】【Java】Bridge パターン ~橋渡し~

使いどころ * 機能と実装を分けたい場合 関連するデザインパターン * Adapterパターン 登場人物 Abstraction(抽象化) * 機能クラスのスーパークラス RefinedAbstraction(改善した抽象化) * 「Abstraction」を機能追加したクラス Implementor(実装者) * 機能…

【デザインパターン】【Java】Decorator パターン ~装飾者~

■ Decoratorパターン * 既存クラスのメソッドに対して、継承を使わずに ラッパークラス(機能を一つひとつかぶせていくイメージ)を作ることで 機能追加を行うデザインパターン ■ 使いどころ * 機能を追加(拡張)する場合 ■ 登場人物 Component (部品) * 機…

【デザインパターン】【GoF】【Java】Flyweight パターン

Flyweight パターン * 生成済みのオブジェクトをできるだけ再利用(共有)し、 無駄なオブジェクト生成処理(メモリ使用)を防止するパターン 登場人物 Flyweight * 多くのオブジェクトを生成され得る可能性のあるクラス FlyweightFactory ★このクラスがキモ★ * …

【デザインパターン】【GoF】【Java】Composite パターン

Composite パターン * 再帰的な構造の取り扱いを容易 => つまり、階層構造で表現されるオブジェクトの取扱いを容易にするパターン => 例えば、ファイルシステムや XMLで表現されるデータ構造(連絡網、部署、プロジェクト(大項目~小項目)など) デメリッ…

【デザインパターン】【GoF】【Java】Template Method パターン ~ ひな型メソッド ~

Template Method パターン * 具体的な処理をサブクラスにまかせるデザインパターン ⇒ プログラム初心者に、実装してもらう時に使えそう ⇒ これは使える! 使用実例 * サーブレット →言われてみたら、init()、destroy()とかあるよな。 デメリット [1] クラス…

【デザインパターン】【GoF】【Java】 Abstract Factory パターン

使いどころ * グループをなす一連のクラスを使用したい場合 => 例えば、特定のDBMS(Oracle、SQL Server、MySQL etc)にアクセスする機能 => 例えば、ファイル(CSV、JSON、XML etc)生成する機能 サンプル * サンプルを作成した感想としては、以下のサイトで言…

【デザインパターン】【GoF】【Java】Mementoパターン

使いどころ * Undo機能 => 一度変化してしまったインスタンスを、 「少し前の状態に戻したい」「ある時点の状態に戻したい」などの時に使用する ※ ただし、完全に複製するのではなく、必要な情報のみを保持しておき、 必要なデータのみを復元する サンプル M…

【デザインパターン】デザインパターンの分類 ~目次~

■ はじめに GOF の デザインパターン についての目次。 目次 【1】オブジェクトの生成に関するパターン 1)Singleton(一人っ子) 2)Factory Method(工場メソッド) 3)Abstract Factory(抽象的な工場) 4)Builder(構築者) 5)Prototype(原型) 【2】プ…

【デザインパターン】【GoF】【C#】プロトタイプ(Prototype)パターン

Prototype * 現在のインスタンスをまるごとクローン(コピー)を作成する (単純なnewでは、属性値が初期値に戻ってしまう) 注意 .NETやJavaでは、以下のように実装するが、これらは、浅いコピー(後述)であることに注意 ■.NETの場合 →ICloneableインタフ…

【デザインパターン】【GoF】【VB】シングルトーン(Singleton)パターン

サンプル Public Class SampleClass Private Shared class1Array As Class1() Private Shared singletonInstance As SampleClass ' コンストラクタです。(外部からのアクセス不可) Private Sub New() Me.LoadXmlFile() End Sub Public Shared Function GetIn…

【デザインパターン】【GoF】ファサード(Facade)パターン

Facadeパターンとは? * 既存のクラスを複数組み合わせて使う手順を、「窓口」となるクラス(=Facade)を作ってシンプルに利用できるようにするパターン (=>このパターンを作った意義は、すごく良く分かる。よく使うパターンは、色々なクラスを組み合わせるより…

【デザインパターン】【GoF】【C#】ストラテージ(Strategy)パターン

Strategyパターンとは? * プログラムの実行時にアルゴリズム(処理の戦略)を切り替えることができるパターン * アルゴリズム(処理の戦略)を何通りか用意し、状況に応じて切り替えられる Strategy パターンの UML クラス図は、Bridge パターンと同じであ…

【C#】【GoF】Lazy<T>クラス ~Proxyパターンの実現~

Lazy<T>クラス * GOFのデザインパターンのProxyパターン(使用するときまで生成を遅らせる)を実現することができる * Lazy => 必要になるまでやらない 使用用途およびその例 * 重い処理、急に使用する必要がない処理に有効 【例】 * 重い画面(View)の表示 * </t>…

【デザインパターン】Mediatorパターン

■ はじめに GOF の デザインパターンの内のMediatorパターンをメモ。 ■ Mediator(調停者) * オブジェクト間の複雑な協調関係を 集中管理するオブジェクトを定義する。 * これによりオブジェクト同士の結合度を弱め、 柔軟性を保つことができる。 参考文献 ht…

【C#】【GoF】Observerパターン ~IObserver / IObservable インターフェース~

IObserver / IObservable インターフェース * GoFのデザインパターンである Observerパターンを実装することができる IObservable<T> インターフェイス * 通知を送信するクラスを実装する時に、使用する 構文 public class 【通知情報を送るクラス】 : IObserva</t>…

【デザインパターン】Simple Factoryパターン

Simple Factoryパターン * GoFではないけど、Factoryパターンの基礎になるらしいので... サンプル Dater.cs * DateTime型と表示するためのstring型をもつ基本クラス public class Dater { protected DateTime date; protected string dateString; public Dat…

【デザインパターン】【GoF】【C#】Observerパターン

Observerパターン 状態の変化を通知する ポイント * インターフェイス(下記の例では、IObserver)および更新したいデータ群のクラス(MoneyData)を用意する。なお、インターフェイスには、このクラスを引数にもつ更新用のメソッド(Update(MoneyData money…

【デザインパターン】【GoF】Proxyパターン

Proxyパターン Proxyパターンの種類 [1] remote proxy : 別アドレスにあるオブジェクトに対してのアクセスを提供する [2] virtual proxy : コストのかかるオブジェクト作成を出来る限り先送りする [3] protection proxy : オブジェクトへのアクセスを制御す…

【デザインパターン】UIデザインパターン

↓も学んでいかないとな・・・ https://www.sociomedia.co.jp/category/uidesignpatterns

【デザインパターン】【GoF】【C#】Adapterパターン

目的 * インタフェースに互換性のないクラス同士を組み合わせること 実現するための手法(2パターン) [1] 継承を利用した Adapter パターン [2] 委譲を利用した Adapter パターン [1] 継承を利用した Adapter パターン 実現する方法 * インターフェースが同じ…

【GoFデザインパターン】Iteratorパターン

Iteratorパターン 目的 [1] Collectionの要素に順番にアクセスする方法 [2] Collectionの構造を意識する必要はない 利点 [1] データ構造を隠蔽する 使いどころ [1] 集合体を扱うクラスを、自分で作ったとき 実装方法 * オブジェクトの持つデータ構造を非公開…

【デザインパターン】【GoF】【C#】Visitorパターン

Visitorパターン:振る舞いに関するパターン メリット * 構造から処理を分離できる ⇒ 既存のオブジェクトに対し、構造を変更せずに、機能を追加できる 使いどころ * Validation処理(妥当性チェック) ⇒ Validationなら、以下の「Visitorパターンを使うべきケ…