Monthly Archives: February 2017

Update!

Swift: デザインパターン > 生成パターン > Factory Method

オブジェクト設計において、定石となる手法をパターン化したものを デザインパターン といいます。 デザインパターンをきちんと勉強していない人でも、Web のおかげで知らず知らずのうちに使って(コピペして)その恩恵を享受しています。 自分自身パターン概要を一読しただけで、あいまいな使い方をしているものが多く、この際勉強を兼ねて GOF 23 パターンのなかでよく利用するものを Swift3 で記述していきたいと思います。 今回は 生成パターン の Factory Method について説明します。 目次 Factory の概要 [生成] Factory Method パターン まとめ Factory の概要 オブジェクトの 生成 と、オブジェクトの 実装 を 分離する するパターン。 プロダクトを発注する側は、工場内でどういった工程を経てプロダクトが完成するかを知らなくても、工場に対しプロダクトを要求すれば、プロダクトを受け取る事ができる。 この仕組みにより、プロダクト発注側はプロダクトの管理 に、工場側はプロダクトの生産工程 に集中できるようになる。 [生成] Factory Method パターン オブジェクトの生成のインタフェースを提供し、インスタンス化するクラスを決定するのはサブクラスで行う。 Factory の原則と Abstract Factory パターンとの違い Factory の原則 オブジェクトを生成するとき、オブジェクトの生成のためのインタフェースを提供し、インスタンス化するクラスを決定する役割はサブクラスで行う。 Factory Method パターン オブジェクトを生成するとき、オブジェクトの生成のためのインタフェースを提供し、インスタンス化するクラスを決定する役割はサブクラスで行う。 Abstract Factory パターン オブジェクトを生成するとき、具体的なクラスを明確にせず(カプセル化)、生成のためのインタフェースを提供する。 パターンの概要 Product 生成オブジェクト ConcreteProduct のインタフェースを決定 ConcreteProduct 具体的な製品を決定します。 サンプルコード Product.swift ConcreteProduct.swift ViewController.swift 実行結果 ※ XXX はプロジェクト名 まとめ 今回は ViewController の Protocol と Extension を利用して抽象クラスを実現していますが、次期 Swift では抽象クラスにも対応するみたいです。 次回は 生成パターン の Abstract Factory パターンを説明したいと思います。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Swift: デザインパターン > 生成パターン > Builder

オブジェクト設計において、定石となる手法をパターン化したものを デザインパターン といいます。 デザインパターンをきちんと勉強していない人でも、Web のおかげで知らず知らずのうちに使って(コピペして)その恩恵を享受しています。 自分自身パターン概要を一読しただけで、あいまいな使い方をしているものが多く、この際勉強を兼ねて GOF 23 パターンのなかでよく利用するものを Swift3 で記述していきたいと思います。 今回は 生成パターン の Builder について説明します。 目次 [生成] Builder パターン まとめ [生成] Builder パターン Builder はオブジェクトの生成(建築)過程を抽象化し、動的にオブジェクトを生成(建築)することを可能にするパターンです。 パターンの概要 Director Builder に提供されているインタフェースを使用しオブジェクトを生成(建築)する。 Builder オブジェクト生成(建築)過程のインターフェースを定義する。 ConcreteBuilder Builder が定義したインターフェースを実装する。 Product Builder により生成されたオブジェクト(成果物)。 サンプルコード Director.swift Builder.swift ConcreteBuilder.swift Product.swift ViewController.swift 実行結果 まとめ Director は ConcreteBuilder をすることで、Product が生成されていることが確認できます。 次回は 生成パターン の Factory Method パターンを説明したいと思います。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Swift: デザインパターン > 生成パターン > Prototype

オブジェクト設計において、定石となる手法をパターン化したものを デザインパターン といいます。 デザインパターンをきちんと勉強していない人でも、Web のおかげで知らず知らずのうちに使って(コピペして)その恩恵を享受しています。 自分自身パターン概要を一読しただけで、あいまいな使い方をしているものが多く、この際勉強を兼ねて GOF 23 パターンのなかでよく利用するものを Swift3 で記述していきたいと思います。 今回は 生成パターン の Prototype について説明します。 目次 [生成] Prototype パターン まとめ [生成] Prototype パターン オブジェクトの生成は、通常 クラス から new で オブジェクト を生成しますが、Prototype は、オブジェクト の clone メソッド から オブジェクト の クローン(複製) を生成します。 サンプルコード Client.swift ConcretePrototype.swift ViewController.swift Prototype は プロトコル により clone メソッドのインタフェースを提供します。 実行結果 まとめ Prototype はその特性上、1つや2つではなく、数十数百〜といったオブジェクトを生成しなければいけない場合に利用します。 次回は 生成パターン の Builder パターンを説明したいと思います。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Swift: デザインパターン > 生成パターン > Singleton

オブジェクト設計において、定石となる手法をパターン化したものを デザインパターン といいます。 デザインパターンをきちんと勉強していない人でも、Web のおかげで知らず知らずのうちに使って(コピペして)その恩恵を享受しています。 自分自身パターン概要を一読しただけで、あいまいな使い方をしているものが多く、この際勉強を兼ねて GOF 23 パターンのなかでよく利用するものを Swift3 で記述していきたいと思います。 今回は Swift で避けて通ることができない、有名な 生成パターン の Singleton について説明します。 目次 [生成] Singleton パターン まとめ [生成] Singleton パターン あるオブジェクトが単一であること(オブジェクトが複数生成されていないこと)を保証するパターン。 サンプルコード Singleton.swift ViewController.swift 実行結果 まとめ 初見で意味がわからなくても、サンプルコードを繰り返しコーディングしているうちに、突然ある時期を境に理解できる日が来ます。何事も理解するまで続けることができるかどうかが、その人の適正だったり才能なのかもしれません。 次回は 生成パターン の Prototype パターンを説明したいと思います。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。