当前位置: 首页 > news >正文

大田县建设局官方网站中江移动网站建设

大田县建设局官方网站,中江移动网站建设,阿里云wordpress教程,网站公司建设网站收费模块MVC框架的简介 在与师姐和团队成员沟通之后,我近期对MVC架构有了新的思考,MVC,就是将一个具体的程序或者可以说成是软件,以模型(model),视图(view),控制器(controller)来组织代码,从而实现业务逻辑,数据,界面显示分离. Model(模型)是应用程序中用于处理…

MVC框架的简介
在与师姐和团队成员沟通之后,我近期对MVC架构有了新的思考,MVC,就是将一个具体的程序或者可以说成是软件,以模型(model),视图(view),控制器(controller)来组织代码,从而实现业务逻辑,数据,界面显示分离.

  Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分.通  常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

在此设计框架上实现了分成,分离,在建立比较复杂的应用程序的时候可以在一个时间专门关注一个方面,分离处理.
以数字类,挑选奇偶数为例,在此我也同样考虑运用了简单工厂模式和工厂模式.

在model中,就是数字类,在此实现相应的业务逻辑(奇偶数判断),以及对Controller传来的数据进行处理,并保存在model之中,在此,为了在三者之间可以构成一个环,model之中就有一个UpdateView函数,来通知view更新来显示数据.获取的数据存储在model中.
在Controller中,仅仅是用来传递view传递过来的数据,其中包括数字的集合和view的信息(供之后model来实现调用),在此,其实可以增加很多控制器逻辑.可以对数据进行处理使其得到 的数据能够符合model的需求.
在view中,是提供全部的界面操作,与用户进行联系,从而得到数据,数据可以是用户输入,员可以是网络中获取,并在view中建立相应的可供model的回调机制,可以是一个接口.

view获取数据,与用户交互并在view中调用Controller来传递数据,Controller来处理选择数据,然后传递给Model进行对应的业务处理.从而构成一个闭环.

需要注意的是这里尊重严格的顺序关系,只能由一个箭头的一端传递到 一个端,从而加强封装性,保密性.使调用接口简单化.
下面是改进的JAVA程序
Event.java

package Event;
import NumberModel.NumberX;
public interface Event{public abstract void updateView(NumberX number);
}

NumberX.java

package NumberModel;import java.util.*;
import Event.*;public abstract  class NumberX{public  abstract   List <Integer> GetNumberList();public abstract boolean GetType();//获得数字类是属于那种类型的数字类,返回FALSE是奇数,返回TURE是偶数public abstract void clear();//清除数字类链表中的数据public abstract void add(Integer i);public abstract boolean IsThisNumber(Integer i);//用来判断是否是该类型的数public abstract NumberX GetInstace();public abstract void Distinguish(List <Integer> list,Event event);//由C层调用传递数据给m层处理
}

OddNumber.java

package NumberModel;
import java.util.*;
import Event.*;
import java.lang.Integer;public class OddNumber extends NumberX{private  ArrayList <Integer> OddList=new ArrayList<Integer>();//建立私有的链表成员private  OddNumber oddNumber=new OddNumber();//声明为私有的固态变量来建立单体public OddNumber(){}@Overridepublic  void  Distinguish(List <Integer> list,Event event){OddList.clear();for(int i=0;i<list.size();i++){if(IsThisNumber(list.get(i))){OddList.add(list.get(i));}}event.updateView(this);//回调,通知V层更新}@Overridepublic  NumberX GetInstace(){return oddNumber;//通过调用此函数来获取单体的对象}@Overridepublic  void clear(){OddList.clear();}@Overridepublic  void add(Integer i){OddList.add(i);}@Overridepublic boolean IsThisNumber(Integer i){if(i%2==0)return false;else return true;}public  boolean GetType()//获得数字类是属于那种类型的数字类,告诉调用者是奇数{return false;}@Overridepublic  List<Integer> GetNumberList(){return OddList;}
}

EvenNumber.java

package NumberModel;
import java.util.*;
import Event.*;
import java.lang.Integer;public class OddNumber extends NumberX{private  ArrayList <Integer> OddList=new ArrayList<Integer>();//建立私有的链表成员private  OddNumber oddNumber=new OddNumber();//声明为私有的固态变量来建立单体public OddNumber(){}@Overridepublic  void  Distinguish(List <Integer> list,Event event){OddList.clear();for(int i=0;i<list.size();i++){if(IsThisNumber(list.get(i))){OddList.add(list.get(i));}}event.updateView(this);//回调,通知V层更新}@Overridepublic  NumberX GetInstace(){return oddNumber;//通过调用此函数来获取单体的对象}@Overridepublic  void clear(){OddList.clear();}@Overridepublic  void add(Integer i){OddList.add(i);}@Overridepublic boolean IsThisNumber(Integer i){if(i%2==0)return false;else return true;}public  boolean GetType()//获得数字类是属于那种类型的数字类,告诉调用者是奇数{return false;}@Overridepublic  List<Integer> GetNumberList(){return OddList;}
}

NumberView.java

package NumberView;
import java.util.*;
import Event.*;
import NumberModel.*;
import NumberController.*;public  class NumberView implements Event {//建立视图类public  void ShowNumber(NumberX NumberExample){//用来显示挑选数的数字List <Integer> List=NumberExample.GetNumberList();//List作为声明来访问数列if(NumberExample.GetType()==true)System.out.println("the Evens is:");elseSystem.out.println("the odds is:");for(int i=0;i<List.size();i++){System.out.print(List.get(i)+" ");}}public void ShowUi(){int n;List <Integer>numberList=new ArrayList<Integer>();Scanner in=new Scanner(System.in);System.out.println("请输入你要输入的数字的个数");n=in.nextInt();System.out.println("请分别输入这些数");for(int i=0;i<n; i++){numberList.add(in.nextInt());}int type;System.out.println("请输入你要输入你要挑选奇数还是偶数,奇数输入0,偶数输入1");n=in.nextInt();SimpleFactory factory=new SimpleFactory();factory.NumberDistinguish(numberList,n,this);}public void updateView(NumberX number){ShowNumber(number);}
}

NumberController.java

package NumberController;
import java.util.*;
import java.lang.Integer;
import Event.*;
import NumberModel.*;public  class NumberController{private NumberX NumberEx=null;//NumberEx作为所具有的number类的引用public NumberController(NumberX Nu){//抽象类的构造函数NumberEx=Nu.GetInstace();//构造函数建立数字类的时候赋值}public void NumberDistinguishController(List<Integer> list,Event event)//list为V层传递进来的链表类//event传递视图类的信息事件{NumberEx.Distinguish(list,event);}public void ChangeNumber(NumberX NumberDate){//用来改变控制器控制的数字类,达到改变NumberEx=NumberDate.GetInstace();}
}

simpleFactory.java 也是此程序的controller层

package NumberController;import java.util.*;
import Event.*;
import NumberController.*;
import NumberModel.*;public class SimpleFactory{public SimpleFactory(){}public void NumberDistinguish(List <Integer> L,int type,Event event){//event传递视图类的信息事件NumberController controller;OddNumber OddNum=new OddNumber();EvenNumber EvenNum=new EvenNumber();if(type==0)controller=new NumberController(OddNum);elsecontroller=new NumberController(EvenNum);controller.NumberDistinguishController(L,event);}}

simpleFactoryMain.java 用来开始执行程序

import java.io.*;
import java.util.*;
import NumberView.*;
import NumberController.*;
import NumberModel.*;public class simpleFactoryMain{public static void main(String []args){NumberView view=new NumberView();//建立一个视图类对象view.ShowUi();//引用函数来显示界面,与用户互动,获取信息
}
}

以下是用C++来实现工厂模式

//Event.h#include "NumberX.h"class Event{
public:virtual void UpdateView(NumberX* );
};
//NumberX.h#include <iostream>
#include <vector>#ifndef MAIN_H_
#define MAIN_H_#include "Event.h"class NumberX{
public:virtual std::vector<int> *GetNumberList()=0;virtual bool GetType()=0;//获得数字类是属于那种类型的数字类,返回0是奇数,返回1是偶数virtual std::vector<int>*GetNumberVector()=0;//得到向量virtual void clear()=0;//清楚所有数据virtual void push(int)=0;//为数字类总增加数据virtual bool IsThisNumber(int i)=0;//判断该数字是否是属于该数字类virtual void Distinguish(std::vector<int> list,Event*event)=0;
};
class EvenNumber:public NumberX{
public:std::vector<int>* GetNumberList();//得到相应的数列的向量bool GetType();//获得数字类是属于那种类型的数字类,告诉调用者是偶数std::vector<int>*GetNumberVector(){return &EvenVector;}void clear(){EvenVector.clear();}//清楚所有数据void push(int i){EvenVector.push_back(i);}bool IsThisNumber(int i);//判断该数字是否是属于该数字类void Distinguish(std::vector<int> list,Event*event){EvenVector.clear();for(int i=0;i<list.size();i++){if(IsThisNumber(list.at(i))){push(list.at(i));}}event->UpdateView(this);//M层的回调来通知V层更新};
private:std::vector<int> EvenVector;//作为向量来存储变量
};bool EvenNumber::IsThisNumber(int i){if(i%2==0)return 1;else return 0;
}std::vector<int> *EvenNumber::GetNumberList(){return &EvenVector;
}
bool EvenNumber::GetType(){return 1;
}class OddNumber:public NumberX{
public:std::vector<int> *GetNumberList();//得到相应的数列的向量bool GetType();//获得数字类是属于那种类型的数字类,告诉调用者是偶数std::vector<int>*GetNumberVector(){return &OddVector;}void clear(){OddVector.clear();}//清楚所有数据void push(int i){OddVector.push_back(i);}bool IsThisNumber(int i){if((i+1)%2==0)return 1;else return 0;}//判断该数字是否是属于该数字类void Distinguish(std::vector<int> list,Event *event){OddVector.clear();for(int i=0;i<list.size();i++){if(IsThisNumber(list.at(i))){push(list.at(i));}}event->UpdateView(this);};
private:std::vector<int> OddVector;//作为向量来存储变量
};
std::vector<int> *OddNumber::GetNumberList(){return &OddVector;
}
bool OddNumber::GetType(){return 0;
}
#endif
//Factory.h#ifndef MAIN_H
#define MAIN_H#include <iostream>
#include <vector>
#include "NumberX.h"
#include"NumberView.h"
#include "Event.h"
#include "NumberController.h"class Factory{//抽象工厂,用来分开处理每个具体的工厂
public:virtual void  NumberDistinguish(std::vector<int> NumberVector,Event *event)=0;//NumberVector作为传递进来的样本
};class EvenFactory:public Factory{
public:void NumberDistinguish(std::vector<int> NumberVector,Event *event){EvenNumber evenNumber;NumberController controller(&evenNumber);controller.NumberDistinguishController(NumberVector,event);}
private:EvenNumber evenVector;//EvenVector作为新建的偶数向量来存储判断的偶数
};class OddFactory:public Factory{
public:void NumberDistinguish(std::vector<int> NumberVector,Event *event){//OddVector作为传递进来的样本OddNumber oddNumber;NumberController controller(&oddNumber);controller.NumberDistinguishController(NumberVector,event);}
private:OddNumber oddVector;//OddVector作为新建的偶数向量来存储判断的奇数
};#endif
//NumberController.h#ifndef MAIN
#define MAIN#include <iostream>
#include <vector>
#include"Event.h"
#include "NumberX.h"
#include "NumberView.h"class NumberController{
private:NumberX *NumberEx;//NumberEx作为所具有的number类
public:NumberController(NumberX *Nu,NumberView vi){//抽象类的构造函数NumberEx=Nu;//构造函数建立数字类的时候赋值}NumberController(NumberX *Nu){//抽象类的构造函数NumberEx=Nu;//构造函数建立数字类的时候赋值}void NumberDistinguishController(vector<int>list,Event *event)//list为V层传递进来的链表类//event传递视图类的信息事件{NumberEx->Distinguish(list,event);}
};
#endif
//NumberView.h#ifndef MAIN_H__
#define MAIN_H__#include <iostream>
#include <vector>#include "NumberX.h"
#include "Event.h"using namespace std;class NumberView:public Event{//建立视图类
public:void ShowNumber(NumberX *NumberExample);//用来显示挑选数的数字void ShowUi();void UpdateView(NumberX*Event);};
void NumberView::UpdateView(NumberX* number){ShowNumber(number);
};
void NumberView::ShowUi(){std::vector<int> NumberVector;int n,temp;cout << "请输入你要输入的数字的个数"<<endl;cin >>n;cout <<"请分别输入这些数"<<endl;for(int i=0;i<n;i++){cin >> temp;NumberVector.push_back(temp);}NumberX *number;EvenFactory evenFactory;OddFactory oddFatory;NumberView view ;number=evenFactory.NumberDistinguish(NumberVector);view.ShowNumber(number);number=oddFatory.NumberDistinguish(NumberVector);view.ShowNumber(number);
}void NumberView::ShowNumber(NumberX *NumberExample){//用来显示挑选数的数字std::vector<int> *v=NumberExample->GetNumberList();//v作为指针来访问数列if(NumberExample->GetType()==1)cout<<"the Evens is:"<<endl;elsecout<<"the odds is:"<<endl;for (std::vector<int>::iterator it = v->begin() ; it != v->end(); ++it)std::cout << ' ' << *it;std::cout << '\n';
}
void 
#endif
//main.cpp#include <iostream>
#include <vector>#include "NumberX.h"
#include "NumberView.h"
#include "NumberController.h"
#include "Factory.h"using namespace std;// 4 3 2 5 4int main(){NumberView view=new View();view.ShowUi();
}
http://www.yayakq.cn/news/200195/

相关文章:

  • 为什么招聘网站不能用自己做的简历wordpress常用插件汇总
  • 茂名网站建设维护天元建设集团有限公司企业简介
  • 建设银行深圳天健世纪支行网站开的免费网站能赚钱吗
  • 南京手机网站wordpress 关闭rss
  • 出版社网站必须做企业可信认证嘛什么是网站及其制作步骤
  • 东莞网站建设做网站页面布局标准格式
  • 淘宝返利网站怎么做的自媒体视频发布平台
  • 北京正邦网站建设网站后台功能开发
  • 百度关键词搜索怎么做泉州做网站seo
  • 正规的网站建设公搜索百度网页版
  • seo流量软件表单网站怎么做seo
  • 网站的切换语言都是怎么做的杭州网站建设公司哪家好
  • 网站建设维护总结网站之前没备案
  • 网站关键词指数查询数据来源于网站怎么做参考文献
  • 利辛网站建设重庆网站建设选圣矢
  • 简述网站开发设计流程图长春建设平台网站的公司
  • 最好的扁平化网站中国十大装饰公司
  • 开发购物网站50个产品改良设计
  • 上海松江做网站建设中信建设有限责任公司企业邮箱
  • 做的最好的微电影网站网站建设方法牜金手指下拉覀
  • 宇宙企画网站官网如何做广告推广
  • 自己做网站怎么别人怎么浏览WordPress 分类 调用
  • 网站版权模板网上购物网站建设
  • 东阳市城建设局网站做一个人网站需要注意什么
  • wordpress发邮件收到不到邮件seo优化软件购买
  • 网站费做进什么科目自助建站网站程序源码
  • 手机响应式网站开发个人网站做公司网站
  • 使用word做网站长沙便宜做网站
  • 长春火车站什么时候通车网站开发技术参考文献
  • 河南手机网站建设多少钱沈阳定制网站