MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法,这个方法的假设前提是如果业务逻辑被聚集到一个部件里面,而且界面和用户围绕数据的交互能被改进和个性化定制而不需要重新编写业务逻辑MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
MVC开始是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
模型-视图-控制器(MVC)是Xerox PARC在二十世纪八十年代为编程语言Smalltalk-80发明的一种软件设计模式,已被广泛使用。后来被推荐为Oracle旗下Sun公司Java EE平台的设计模式,并且受到越来越多的使用 ColdFusion 和 PHP 的开发者的欢迎。模型-视图-控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点。
案例:(之前我看过的一些案例中选择的)
定义一个交通工具(Vehicle)的类,其中有:
属性:速度(speed),体积(size)等等
方法:移动(move()),设置速度(setSpeed(int speed)),加速speedUp(),减速speedDown()等等.
最后在测试类Vehicle中的main()中实例化一个交通工具对象,并通过方法给它初始化speed,size的值,并且通过打印出来。另外,调用加速,减速的方法对速度进行改变。
(这就是几个简单的案例需要注意的是接下来的分工步骤就是MVC的简单实现)
public class Vehicle //实体类 model +控制器controller
{
private String name;
private String brand;
private String color;
private int number;
public Vehicle(String name;String brand;String color;String number)
{
this.name=name;
this.brand=brand;
this.color=color;
this.number=number;
}
public String getName()
{
return name;
}
public String getBrand()
{
return brand;
}
public String getColor()
{
return color;
}
public String getNumber()
{
return number;
}
public void setName(String name)
{
this.name=name;
}
public void setBrand(String brand)
{
this.brand=brand;
}
public void setcColor(String color)
{
this.color=color;
}
public void setNumber(String number)
{
this.number=number;
}
public void jiasu()
{
System.out.println("加速!");
}
public void jiansu()
{
System.out.println("减速!");
}
public void move()
{
System.out.println("移动!");
}
public void stop()
{
System.out.println("停止!");
}
public void toString(){
System.out.println("名字"+getName()+"品牌"+getBrand()+"颜色"+getColor+"车牌号"+getNumber());
}
}
class Truck extends Vehicle //实体类 model +控制器controller
{
private int speed;
public Vehicle(String name;String brand;String color;String number,int speed)
{
super(name;brand;color;number);
this.speed=speed;
}
public int getSpeed()
{
return speed;
}
public void setSpeed(int speed)
{
this.speed=speed;
}
public void move()
{
System.out.println("移动!");
}
public void stop()
{
System.out.println("停止!");
}
public void toString(){
System.out.println("名字"+getName()+"品牌"+getBrand()+"颜色"+getColor+"车牌号"+getNumber()+"车速"+getSpeed());
}
public static void main(String args[]) //显示类一般是给用户提供需求信息的部分叫 view
{
Vehicle v = new Vehicle("名字","品牌","颜色","车牌号");
Truck t = new Truck("名字","品牌","颜色","车牌号",60);
v.toString();
t.toString();
}
}
编写Java程序,用于显示人的姓名和年龄。
定义一个人类(Person),该类中应该有两个私有属性,姓名(name)和年龄(age)。定义构造方法,用来初始化数据成员。再定义显示(display)方法,将姓名和年龄打印出来。
在main方法中创建人类的实例,然后将信息显示。
public class Person() { //model
String name;
int age;
String sex; //或者用int表示:如0表示男 1表示女
List<Person> msg = new ArrayList<Person>();
person(String name,int age,String sex){
this.name = name;
this.age = age;
this.sex = sex;
}
public void add(Person p) { //controller
msg.add(p);
}
public static void main(String[] args) { //view
}
}
定义一个名为Vehicles(交通工具)的基类,该类中应包含String类型的成员属性brand(商标)和color(颜色),还应包含成员方法run(行驶,在控制台显示“我已经开动了”)和showInfo(显示信息,在控制台显示商标和颜色),并编写构造方法初始化其成员属性。
编写Car(小汽车)类继承于Vehicles类,增加int型成员属性seats(座位),还应增加成员方法showCar(在控制台显示小汽车的信息),并编写构造方法。
编写Truck(卡车)类继承于Vehicles类,增加float型成员属性load(载重),还应增加成员方法showTruck(在控制台显示卡车的信息),并编写构造方法。
在main方法中测试以上各类。
public class Vehicles { //实体类 模型(Model)
private String brand;
private String color;
//构造方法
public Vehicles(String brand, String color) {
this.brand = brand;
this.color = color;
}
public void run() {
System.out.println("我已经开动了");
}
public void showinfo() {
System.out.println("商标: " + brand);
System.out.println("颜色: " + color);
}
}
//保存为Vehicles.java
//特定车辆car子类
public class Car extends Vehicles { //操作类 控制器(controller)
private int seats;
//构造方法
public Car(String brand, String color, int seats) {
super(brand, color);
this.seats = seats;
}
public void showCar() {
super.showinfo();
System.out.println("座位: " + seats + " 个");
}
}
//保存为 Car.java
public class Truck extends Vehicles { //操作类 控制器(controller)
private float load;
public Truck(String brand, String color, float load) {
super(brand, color);
this.load = load;
}
public void showTruck() {
super.showinfo();
System.out.println("载重 :" + load + "吨");
}
}
//保存为Truck.java
public class Test {// 视图(View) 主要显示结果的
public static void main(String[] args) {
Vehicles vehicle = new Vehicles("奥迪", "黑色");
vehicle.showinfo();
Car car = new Car("桑塔纳", "红色", 5);
car.showCar();
Truck truck = new Truck("解放", "蓝色", 10);
truck.showTruck();
}
}
//保存为 Test.java
把这个四个文件放在一个目录下,
在cmd中输入
javac Test.java
java Test |