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。