デザインパターンといえば、MVC・MVP・CleanArchitectureなど様々なアーキテクチャありますが、今回は基本の基本、であるMVCについて、Swiftにおける基本をまとめました。

MVCについて説明

まずMVCとはアプリケーションを実装するためのデザインパターンで、内部データをユーザーが直接参照・編集する情報から分離します。以下の3つの部分に分割されます。
・Model – ビジネスロジックなど処理部分を書きます
・View – 画面への表示部分を担当します
・Controller – Model、Viewへ指示を出します
下画像はMVCのイメージ図
f:id:frmski:20181007232634p:plain:w500

SwfitにおけるMVC

さてSwiftでのMVCはViewとControllerが一つになっています。なのでMassiveViewControllerと言われるようなViewControllerの肥大化が課題となっています。この課題はCleanArchitectureやMVVMなど、他のデザインパターンで解決できるのですが、今回はMVCの理解を深めましょう。

Modelを作成

今回はTestViewController.swiftとTestModel.swiftを作成してVCとMの連携を簡単に実装します。下記ソースでは、TestModelにデリゲートを作成して値を監視するようにしています。

protocol TestModelDelegate:class {
func did()
}
class TestModel{
private num:int = 0
var delegate:TestModelDelegate? = nil
//値をセット
public func setNum(_num:int){
num = _num
delegate?.did()
}
}

ViewControllerを作成

ViewControllerではTestModelを作成し、変数の管理やビジネスロジックの実装を任せます。

class TestViewController :UIViewController,TestModelDelegate{
private var tModel = TestModel()
override func viewDidLoad(){
super.viewDidLoad()
tModel.delegate = self
tModel.setNum(2)
}
}

以上で基本的なMVCの実装は簡単にできます。

最後に

何かと問題点も指摘されているMVCなので今後はMVPやCleanArchitectureについても挑戦したいと思います。