Swiftにおける基本のMVCアーキテクチャについて
デザインパターンといえば、MVC・MVP・CleanArchitectureなど様々なアーキテクチャありますが、今回は基本の基本、であるMVCについて、Swiftにおける基本をまとめました。
MVCについて説明
まずMVCとはアプリケーションを実装するためのデザインパターンで、内部データをユーザーが直接参照・編集する情報から分離します。以下の3つの部分に分割されます。 ・Model - ビジネスロジックなど処理部分を書きます ・View - 画面への表示部分を担当します ・Controller - Model、Viewへ指示を出します 下画像はMVCのイメージ図
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についても挑戦したいと思います。