デザインパターン

概要

デザインパターンとは、主にOOPで使用される可読性や高率性を高めるためのテクニック、手法である。特定の言語のみならず様々な言語で使用される。

コードの再利用性や拡張性が格段に高まる。
プログラムをシンプルに保つことができる。

デザインパターン

種類

Singletonパターン

特定のクラスのインスタンスがただ一つであることを保証するデザインパターン。
例としてデータベースなどは、そのトランザクションの関係などからDB操作クラスは一つであることが求められる。

以下にDartでの例を示す。

Dartのシングルトン

class DBcontroller{
	DBController._();
	
	static DBController _instance;
	
	factory DBController(){
		_instanc ??= DBControllor();
		return instance!;
	}
}

ほとんどの言語で同じような仕組みでシングルトンを作成することができる。

最初に、ほかのクラスなどからインスタンス化出来ないようにコンストラクタをプライベートに設定する。
まず、静的なクラスのインスタンスを作成する。
まだ、そのインスタンスが初期化されていないならインスタンス化してreturnで返すもの。

Factoryパターン

まずファクトリとは、そのクラスのインスタンスを返却する言語の記法である。

オブジェクトの生成部分をカプセル化することによって、クラスの具体的な生成方法を知らなくてもオブジェクトを作成することができるもの。

ファクトリは以下のような記法で記述することができる。

class Sample{
	final int num; 
	Sample({required this.num});
 
	factory Sample.fromInt(int num){
		return Sample(num);
	}
}

この例ではあまり分からないかもしれないが、実装方法を隠ぺいすることができる。

例えば、インスタンス化後にインスタンス経由で処理を行わなければならない場合などに活用することができる。

抽象クラスなどと相性が良い。

Strategyパターン

ストラテジパターン

Observerパターン

Observerとは観察者の意。特定のオブジェクトに変更があった場合にObserverに対して通知を行うというもの。
ウォッチャーやリスナーのクラス版ともいえる。

通知を取得したObserverクラスはその処理を行う。