赞
踩
MVC(Model View Controller)是一种软件设计的框架模式,它采用模型(Model)-视图(View)-控制器(controller)的方法把业务逻辑、数据与界面显示分离。把众多的业务逻辑聚集到一个部件里面,当然这种比较官方的解释是不能让我们足够清晰的理解什么是MVC的。用通俗的话来讲,MVC的理念就是把数据处理、数据展示(界面)和程序/用户的交互三者分离开的一种编程模式。
举个例子,在登陆注册的实现中我们可以只在两个view controller类对中完成所有操作,而MVC则要求我们将每个view controller对象中分为三部分M(model),V(view),C(controller)三部分;
Model:表示应用程序核心(比如数据库记录列表),通常模型对象负责在数据库中存取数据,模型独立于视图和控制器。通常为NSObject类,如两个可变数组;
View:UI显示,通常为UIview类,用于显示用户所见的Ui和数据;
Controller:如其名,管理用户交互和数据处理之类的活动,通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
MVC模式的目标是将应用程序的不同方面分离,使代码更易于维护和扩展。通过将数据逻辑、用户界面和用户交互分离为独立的组件,MVC模式提供了一种结构化的方法来开发复杂的应用程序。
优点:
1.MVC模式将应用程序的不同方面分离开来,使得模型、视图和控制器能够独立开发和测试。最直接的表现,改代码跟容易了。。。;
也具备了更好的扩展性;
2.可重用性:由于模型和视图是独立的组件,它们可以在不同的场景中重用。这意味着可以使用相同的模型来支持多个不同的视图,或者可以使用不同的视图来显示相同的模型数据。
3.易于维护:由于MVC模式将应用程序的不同部分分开,因此更容易对其进行维护。如果需要更改数据逻辑或用户界面,可以只修改相应的模型或视图,而不会对其他部分造成影响。
4.可测试性:MVC模式的分层结构使单元测试变得更加容易。开发人员可以独立测试模型、视图和控制器,而不需要依赖其他组件。
缺点:
1。复杂性:MVC模式引入了额外的复杂性,因为开发人员需要管理模型、视图和控制器之间的交互。这可能增加了开发时间和复杂性。
2.学习曲线:对于新手开发人员来说,理解和应用MVC模式可能需要一些时间和学习。它需要理解各个组件的角色和相互之间的关系。
3.过度设计:如果应用程序规模较小或简单,使用MVC模式可能会过于复杂和冗余。在这种情况下,选择更简单的架构模式可能更合适。
该demo的实现大致为两个界面,登录和注册;
我这里就讲一下登陆界面,注册界面是差不多的;
M:这里是一个NSObject类,为其添加两个可变数组类的对象作为属性,并提供初始化方法;
V:提供构成用户所见的Ui界面的对象;
C:管理用户交互,以及Model和View的初始化;
#import "loadcontroller.h" #import "ControllerResign.h" @interface loadcontroller () @end @implementation loadcontroller - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = UIColor.whiteColor ; // Do any additional setup after loading the view. self.Viewload = [[loadview alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)] ; [self.Viewload initview] ; [self.view addSubview:self.Viewload] ; self.Modelload = [[loadmodel alloc] init] ; [self.Modelload initmodel] ; [self.Viewload.btnload addTarget:self action:@selector(pressload) forControlEvents:UIControlEventTouchUpInside] ; [self.Viewload.btnresign addTarget:self action:@selector(pressresign) forControlEvents:UIControlEventTouchUpInside] ; } - (void)pressload { BOOL juice = NO ; NSString* str01 = self.Viewload.namefield.text ; NSString* str02 = self.Viewload.passfield.text ; for (int i = 0; i < self.Modelload.namearray.count; i++ ) { if ([str01 isEqualToString:self.Modelload.namearray[i]] && [str02 isEqualToString:self.Modelload.passarray[i]]) { juice = YES ; } } if (juice == NO) { UIAlertController* alertcontroller = [UIAlertController alertControllerWithTitle:@"警告" message:@"用户名或密码不正确" preferredStyle:UIAlertControllerStyleAlert] ; UIAlertAction* action = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { self.Viewload.namefield.text = @"" ; self.Viewload.passfield.text = @"" ; }] ; [alertcontroller addAction:action] ; [self presentViewController:alertcontroller animated:YES completion:nil] ; } else { UIAlertController* alertcontroller = [UIAlertController alertControllerWithTitle:@"警告" message:@"登陆成功" preferredStyle:UIAlertControllerStyleAlert] ; UIAlertAction* action = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { self.Viewload.namefield.text = @"" ; self.Viewload.passfield.text = @"" ; }] ; [alertcontroller addAction:action] ; [self presentViewController:alertcontroller animated:YES completion:nil] ; } } - (void)pressresign { ControllerResign* vc = [[ControllerResign alloc] init] ; vc.delegate = self ; [self.navigationController pushViewController:vc animated:YES] ; NSLog(@"1") ; vc.namearray = self.Modelload.namearray ; vc.passarray = self.Modelload.passarray ; } - (void)resigndelegate:(NSMutableArray *)namearray andnext:(NSMutableArray *)passarray { self.Modelload.namearray = namearray ; self.Modelload.passarray = passarray ; } /* #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. } */ @end
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。