Swift-MVVM Mimari Deseni

MVC’iduymuşsundur,bildiğinüzeregünümüzdefarklıplatformlardaoldukçayaygınkullanılanmimari deseni。 Peki ya MVVM desem?

Buyazıda,模型视图控制器(MVC)和iOS模型视图大规模(iri / hantal)diyeadlandırdığımız模型(Massive)-ViewController’ı(M-VC)elealıyoruz。

Yazılankodlarıntest edilmesi konusundakarşılaşılanproblemleriçözmekiçin模型-视图-视图模型(MVVM)mimarisine nedenihtiyaçduyduğumuzuve bu mimariyinasılkullanacağımızimbir projeüzerinden。

İlginiçektiyse,Başlayalım。

模型视图控制器,模型视图控制器(.NET,Swift,Java,Obj-C)库兰尼兰(Kullanılanoldukça)yaygınbir mimaridir。

MVC mimarisinintasarımamacı, geliştiricilerinuygulamaarayüzlerinihedef projeye kolaycauygulamasıvekullanıcıyasunulanarayüzile verilerin birbirindenayrılmasıdiyebiliriz。

标准模型视图控制器:

MVC deseni 3 Katmandan -layer / component-oluşur,bunlar:

型号: Gorevi uygulamatarafındankullanılanverilerinsaklanmasıdır。 控制器tarafındanverilerinokunmasınavegüncellenmesineolanaksağlar。 Tek birsınıftanveya birbirleriyleilişkilisınıflartopluluğundanoluşur。

视图: Göreviverileri okuyupsunmaktır。 查看katmanı,儿子kullanıcınıngördüğüveetkileşimhalindeolduğugörselbilesenleriyönetensınıfveyasınıflarbutunudur。

负责人: Model ve View,负责人,kullanıcıgirdileriniyönetir,负责人Model -i ve -gerektigi taktirde- View’igüncellemektensorumludur。

逻辑网络的连接是控制者,她的控制者是她的管理员,而管理员则是其他人。 Difer bir ifadeyle,逻辑逻辑,控制器katmanı,uygulamanın,beynidir diyebiliriz。

可可触摸,UIKit,其他Applekütüphaneleri,iOSuygulamalarında 模型视图控制器 mimarisini uygulamakiçingereklialtyapıyısaglar。

模型: NSObject veya NSManagedObjectModelsınıfındantüretilmişherhangi biraltsınıfolabilir。

视图: Herhangi bir UIView的对象,位置:UILabel,UIButton,UISegmentedControl gibi。

管理员: Herhangi bir NSObjectsınıfındantüretilmişaltsınıfolabilir。

Neden Massive?

Bir iOS projesini gelistirmeyebaşladıktanbirkaçaysonraaçıkçagörülecektirki ViewControllersınıfları,-yazılankodsatırıaçısından-uygulamada ençokyer kaplayansınıflardır。 Bunun nedeni,ViewController数据源,genellikle委托ve数据源’larınyönetildiği,View objelerininyönetimkodlarınınbulunduğu,çokçaprotocolunuygulandığıve联网Içerensınıflar的数据。

bu kadarfarklıgörevinViewController’ayüklenmesi,günsonundahızlaşişerekçokyer kaplayan ve zamanlayönetimidaha dazorlaşansınıflarıortayaçıkarır。 Buyüzden苹果ekosistemindeki默认iOSuygulamalarındakullanılanMVC mimarisi,iOSgeliştiricileriarasında大规模视图控制器olarak isimlendirilir。

Massive View Controlleraslındabir 模式,Apple’ınoluşturduğuViewControlleryapısınedeniyle ViewControllerdosyalarınınçabukşişmesindendolayı 大规模(iri / hantal)diyeadlandırılır。

型号: Verileri saklamaktan sorumludur。

视图: Modelioluşturmak,ViewController’dan veri istemek vekullanıcıetkileşimleriniViewController’a aktarmaktan sorumludur。

ViewController: Modelden verileri okuyarak View’agöndermekten,Modeligüncellemekten,kullanıcıetkileşimleriniyakalamaktan sorumludur。

View ve ViewController从视图到视图控制器,从模型视图到ViewController的视图:

大规模视图控制器:

单位测试程序部件名称部件名称默认值M-VC mimarisinde模型默认值测试edilirken herhangi bir sorun部件名称。 Ancak View ve Controller的运行状况和运行情况单位Testlerikırılgan硬皮书。

MVVM deseni,Microsoft软件支持XAML选项卡WPF用户手册olmakiçingeliştirilmiştir。

模型-视图-视图模型mimari deseni:

型号: Verilerinsaklanmasındansorumludur。 ViewModel ileçiftyönlüiletişimhalindedir。

视图/视图控制器视图和视图控制器。 ViewModel ileçiftyönlüiletişimhalindedir。

ViewModel: Uygulamanın逻辑katmanıdır。 业务逻辑与网络之间的网络连接。 从视图模型中查看视图。

iOS的MVVM模式,或2的vardır: ReactiveCocoa / RxSwift 协议 。 Biz MVVM在协议中使用kullanacağız。

Avantajlarındanbahsedecek olursak,projenin逻辑işlemlerinitek birsınıfaltından-ViewController-değilfarklısınıflarabölerekkarmaşıklığıazaltıpyönetielekelınııııııııııııııııı

GitHub上的MVVM mimarileriningeliştiriciyebağlıfarklıImplementasyonlarınıgörebilirsiniz。 Konseptinanlaşılmasıaçısındankullanımısade tutmak ve sonucaulaşmakistiyorum。

您可以在ViewController / Main替代ViewModel或ViewController中创建MVVM’in,在yakulamasınıgöstermeyeçalışacağım,açıklamalarıokurken bu ikiııılınenen中的Kodyapıs

视图模型

HerşeydenönceViewModel和ViewControllerarasındakiiletişimisağlamamızgerek。 ViewController的isteklerinedönüşyapmak图标协议:müzüyazıyoruz:

ArdındanViewModelsınıfımızıyazıp,SınıfiçerisindeViewController’ıaktaracağımız委托’ioluşturuyoruz:

Viewimdi ViewModelaltında逻辑işlemleriyazabiliriz,ben burda yerkaplamamasıadınakodları接口tadındabıraktım,代表kullanımınada metotiçerisindeörnekledim:

ViewController

ViewModel’iyazdıktan声音视图Controller’lailetişiminisağlamakkalıyor。 您可以在ViewController中查看ViewModel对象,然后在ViewModel中添加ViewController对象。

Ardından代表üzerindenViewModel’dekideğişiklikleriyakalamakiçinoluşturduğumuz协议’üsınıfauyarlıyoruz。

Konseptianladıysanızörnekprojedekikodlarıokumanız,ve hattaüzerindedeğişiklikleryapmanızöğrenmesürecinizihızlandıracaktır。

MVC,MVVM mimarilerine ve Massive View Controller’a değinmeyeçalıştım。 您可以从大量视图控制器中获取更多信息,例如,大规模视图控制器的iOS应用程序,其他应用程序,其他应用程序中的MVVM’inavantajları。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

Mimari gibi,kilk lkkaşılaşmadaoldukça大豆gelen birkavramı,olabildiğincegörsellerlezenginleştirerek,sıkmadananlatmayaçalıştım。

Faydalıolabildiysem ne mutlu bana。

Proje Linki:https://goo.gl/Cyzxv8

Teşekkürler。