每天一练:JavaScript 编程题&MySQL 编程题&Java 编程题21

 

谈谈你对MVC的理解

MVC简介

MVC全名是Model View Controller,如图是模型(model)-视图(view)-控制器(controller)的缩写一种软件设计典范用一种业务逻辑数据界面显示分离的方法组织代码在改进和个性化定制界面及用户交互的同时不需要重新编写业务逻辑
其中M层处理数据业务逻辑等;V层处理界面的显示结果;C层起到桥梁的作用来控制V层和M层通信以此来达到分离视图显示和业务逻辑层

Android中的MVC:

视图层(View)
一般采用XML文件进行界面的描述这些XML可以理解为Android AppView。使用的时候可以非常方便的引入同时便于后期界面的修改逻辑中与界面对应的id不变化则代码不用修改大大增强了代码的可维护性
控制层(Controller) ------ Activity
Android的控制层的重任通常落在了众多的Activity的肩上这句话也就暗含了不要在Activity中写代码要通过Activity交割Model业务逻辑层处理这样做的另外一个原因是Android中的Actiivity的响应时间是5s,如果耗时的操作放在这里程序就很容易被回收掉
模型层(Model)
我们针对业务模型建立的数据结构和相关的类就可以理解为AndroidAppModel,Model是与View无关而与业务相关的感谢@Xander的讲解)。对数据库的操作对网络等的操作都应该在Model里面处理当然对业务计算等操作也是必须放在的该层的就是应用程序中二进制的数据

MVC的缺点
Android开发中,Activity并不是一个标准的MVC模式中的Controller,它的首要职责是加载应用的布局和初始化用户 界面并接受并处理来自用户的操作请求进而作出响应随着界面及其逻辑的复杂度不断提升,Activity类的职责不断增加以致变得庞大臃肿

总结
视图(View):用户界面
控制器(Controller):业务逻辑
模型(Model):数据保存
View 传送指令到 Controller;
Controller 完成业务逻辑后要求 Model 改变状态
Model 将新的数据发送到 View,用户得到反馈

2 解释内存中的栈(stack)、(heap)和静态区(static area)的用法

通常我们定义一个基本数据类型的变量一个对象的引用还有就是函数调用的现场保存都使用内存中的栈空间而通过new关键字和构造器创建的对象放在堆空间程序中的字面量(literal)如直接书写的100、”hello”和常量都是放在静态区中栈空间操作起来最快但是栈很小通常大量的对象都是放在堆空间理论上整个内存没有被其他进程使用的空间甚至硬盘上的虚拟内存都可以被当成堆空间来使用

1

String str = new String("hello");

上面的语句中变量str放在栈上new创建出来的字符串对象放在堆上”hello”这个字面量放在静态区

 

3 指出下面程序的运行结果

class A {

 

    static {

        System.out.print("1");

    }

 

    public A() {

        System.out.print("2");

    }

}

 

class B extends A{

 

    static {

        System.out.print("a");

    }

 

    public B() {

        System.out.print("b");

    }

}

 

public class Hello {

 

    public static void main(String[] args) {

        A ab = new B();

        ab = new B();

    }

 

}

 

执行结果:1a2b2b。创建对象时构造器的调用顺序是先初始化静态成员然后调用父类构造器再初始化非静态成员最后调用自身构造器

猜你喜欢

转载自blog.csdn.net/zxfly6/article/details/80578972