mvc

【深入Cocos2d-x】使用MVC架构搭建游戏Four

半城伤御伤魂 提交于 2019-12-09 20:39:00
喜欢Four这个项目,就赶快在 GitHub 上Star这个项目吧! 喜欢我的文章,来微博关注我吧: 王选易在学C艹 点我下载 ## 项目起源 项目Logo: 下面是该游戏的项目地址,各位想参考源代码的同学可以到我的GitHub上下载该项目的源码。 项目主页 GitHub地址 bug反馈及建议 我做这个项目的原始目的是实验MVC在游戏中的应用。 Model-View-Controller(MVC) 是一种组合设计模式,它体现了一种 关注点分离(Separation of concerns,SoC) 的思想。MVC主要把逻辑层和表现层进行了解耦,将一个问题划分成了不同的关注点。增强了应用的稳定性,易修改性和易复用性。 MVC经常被使用在Web框架中,包括J2EE,RoR和.Net中都对MVC模型进行了框架层面上的封装,以便程序员可以简单方便地作出结构良好的Web应用。 Cocos2d-x本身并没有提供内置的MVC支持,但是,我们还是可以在游戏中基于MVC架构来设计游戏。在这篇博文中,我将向大家展示一下我是如何使用MVC架构来塔尖 Four 这个游戏的。 ## 游戏情景 Four这个游戏的创意来自一个叫做走四棋的传统游戏,走四棋规则的详细介绍在这里: 走四棋的百度百科 。 下面我简单谈一下这个面板游戏(board game)的一些特性 一个4行4列的棋盘(Game Board)

怎么优化ViewController,区分模块,分类管理

你离开我真会死。 提交于 2019-12-09 18:53:28
View controllers 通常是 iOS 项目中最大的文件,并且它们包含了许多不必要的代码。所以 View controllers 中的代码几乎总是复用率最低的。我们将会看到给 view controllers 瘦身的技术,让代码变得可以复用,以及把代码移动到更合适的地方。 你可以在 Github 上获取关于这个问题的 示例项目 。 把 Data Source 和其他 Protocols 分离出来 把 UITableViewDataSource 的代码提取出来放到一个单独的类中,是为 view controller 瘦身的强大技术之一。当你多做几次,你就能总结出一些模式,并且创建出可复用的类。 举个例,在示例项目中,有个 PhotosViewController 类,它有以下几个方法: # pragma mark Pragma- (Photo*)photoAtIndexPath:(NSIndexPath*)indexPath { return photos[(NSUInteger)indexPath.row]; } - (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section { return photos.count; } - (UITableViewCell

MVC中outputcache页面缓存

自作多情 提交于 2019-12-09 15:19:26
一、页面缓存 利用页面输出缓存,可以存储呈现的 HTML,以响应相同页的后续请求。 我们可使用输出缓存来缓存整个网页或仅缓存ASP.NET 控件的输出。页面缓存可让 ASP.NET 向客户端发送页响应,而不必再次经过页处理生命周期。 页输出缓存对于那些不经常更改,但需要大量处理才能创建的页特别有用,可以极大地提高该页的性能。 可以分别为每个页配置页缓存,也可以在 Web.config 文件中创建缓存配置文件,利用缓存配置文件,只定义一次缓存设置就可以在多个页中使用这些设置。 二、OutPutCache常用属性介绍 1、Duration 用于设置页面或者用户控件缓存的时间。单位是秒。通过设置该属性,能够为来自对象的HTTP响应建立了一个过期策略,并将自动缓存页或用户控件输出。需要注意的是,Duration属性是必需的,否则将会引起分析器错误。 2、OutputCacheLocation 枚举类型,缓存的位置。当设置成None时,所有缓存将失效,默认为Any。 (1)、Any:页面被缓存在浏览器、代理服务器端和web服务器端; (2)、Client:缓存在浏览器; (3)、DownStream:页面被缓存在浏览器和任何的代理服务器端; (4)、Server:页面被缓存在Web服务器端; (5)、None:页面不缓存; (6)、ServerAndClient

Android -------- MVC,MVP 和 MVVM 架构设计模式

流过昼夜 提交于 2019-12-09 13:39:17
MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用。它本身很容易理解,但是要讲清楚,它与衍生的 MVP 和 MVVM 架构的区别就不容易了。 一、MVC MVC模式的意思是,软件可以分成三个部分。 视图(View):用户界面。 控制器(Controller):业务逻辑 模型(Model):数据保存 各部分之间的通信方式如下。 View 传送指令到 Controller Controller 完成业务逻辑后,要求 Model 改变状态 Model 将新的数据发送到 View,用户得到反馈 所有通信都是单向的。 MVC优点: 耦合性低 重用性高 生命周期成本低 部署快 可维护性高 有利软件工程化管理 MVC缺点: 没有明确的定义 不适合小型,中等规模的应用程序 增加系统结构和实现的复杂性 视图与控制器间的过于紧密的连接 视图对模型数据的低效率访问 一般高级的界面工具或构造器不支持模式 在MVC里,View是可以直接访问Model的。从而,View里会包含Model信息,不可避免的还要包括一些业务逻辑。 在MVC模型里,更关注的Model的不变,而同时有多个对Model的不同显示,及View。 所以,在MVC模型里,Model不依赖于View,但是View是依赖于Model的。不仅如此,因为有一些业务逻辑在View里实现了

Spring mvc试用小结--HelloWorld

一笑奈何 提交于 2019-12-07 13:13:03
1.创建Java Web项目,然后下载spring的jar包放到lib下 2.修改web.xml,和配置struts2差不多 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>spring3_test</display-name> <servlet> <servlet-name>spring</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load

SpringMVC学习篇—SpringMVC原理

只谈情不闲聊 提交于 2019-12-07 01:06:10
先来看两副图 Spring MVC工作流程图 图1: 图2: Spring工作流程描述 1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获; 2. DispatcherServlet 对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象 (包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回; 3. DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter 。( 附注 :如果成功获得HandlerAdapter后,此时将开始执行拦截器的preHandler(...)方法 ) 4. 提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller) 。 在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作: HttpMessageConveter : 将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息 数据转换 :对请求消息进行数据转换。如String转换成Integer、Double等 数据根式化 :对请求消息进行数据格式化

Spring MVC 跳转(1)-转发

谁说胖子不能爱 提交于 2019-12-06 23:44:11
我们在学习Servlet的时候知道,在进行页面跳转时,有转发和重定向两种方式。转发是服务器行为,重定向是客户端行为,重定向,会产生是两次客户端请求。那么在 SpringMVC 中如何实现转发和重定向呢?今天 小博老师 就跟大家介绍一下第一种方式:转发。 SpringMVC可以通过以下几种方式实现转发。 1. return "forward:index.jsp" 在controller中直接返回“forward:目标页面”的方式,如下所示: 需要注意的是,如果index.jsp不在webroot根目录需要相对路径,如果在classes目录下,需要加上WEB-INF/classes路径。如下 所示: 1. return "forward:/product" 这种方式可以实现转发到另一个 RequestMapping 函数,如下所示: 1. return new ModelAndView("forward:index.jsp") 这种方式与第一种类似,需要把路径写完整,如下所示: 来源: oschina 链接: https://my.oschina.net/u/2971691/blog/811681

spring mvc框架 类初始化2次 解决过程

二次信任 提交于 2019-12-06 12:27:55
背景 :刚开始做平台的工作,接触的就是spring mvc框架,struts没碰过,没有任何java web的理论基础,项目组的这个项目框架是spring mvc + ibatis组合的。 做了一个项目觉得挺顺手,都是小项目,第一个项目还有人稍微指导,第二个项目之后都靠自己做了。有空的时候会稍微改一下这个框架的基础东西,比如说,去掉一堆没用的jar包,冗余太多,部署上传费时。去掉struts相关的包,最后在没有提示错误时,通过报的异常导入包,去掉了几十个无用的,方法很土。 事情起因: 因为要用到消息队列,另一个同事调试时,发现本来应该是3个消息队列,却可以看到6个,怀疑类初始化2次,写了个简单的方法,测试,可以看到2次初始化。我自己也写了个,确实看到输出2次。 @Service("Test") public class Test { private static int cnt = 0; public Test() { super(); System.out.println("cnt = " + cnt); cnt++; } } 解决过程: 经过调查,发现spring的配置文件中有2处component-scan,配置文件(web.xml,applicationContext.xml,spring-servlet.xml)大概如下: web.xml <?xml version="1

Spring MVC返回json字符串时数据格式化

不打扰是莪最后的温柔 提交于 2019-12-06 10:18:32
在运用Spring MVC框架开发时,可以直接在方法上添加注解 @ResponseBody 返回JSON数据,如果javabean的属性中包含Date日期类型的数据,默认的转换格式并不是我们想要的 yyyy-MM-dd 这样的格式,那又如何实现这样的格式转化呢? 其实SpringMVC的JSON转换方法是利用了 Jackson 这个开源的第三方类库,它提供了一些自定义格式的方法。只要我们继承它的抽象类:public abstract class JsonSerializer<T>,并在相应的属性方法上添加指定注解:@JsonSerialize 即可实现。 1、自定义一个格式化的类,实现如何对感兴趣的字段进行格式化 import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import org.codehaus.jackson.JsonGenerator; import org.codehaus.jackson.JsonProcessingException; import org.codehaus.jackson.map.JsonSerializer; import org.codehaus.jackson.map.SerializerProvider; /** *

Spring MVC多视图配置

拜拜、爱过 提交于 2019-12-06 10:10:04
[java] 1.Spring配置的XML [html] <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd "> <context:component-scan base-package="com.spring.action"/>