代码改变世界

MVC模式已死

2013-06-22 17:20 by youxin, 739 阅读, 1 推荐, 收藏,
摘要:MVC模式:Model模型 View试图 Control控制器,是目前主流模式,被当作服务器软件入门基本模式学习和掌握,主流框架Struts 1/2 JSF Wicket基本都顺理成章支持MVC模式。但是,随着时间推移,MVC模式也暴露出大量缺点,因为MVC模式本质上是一个结构型模式,结构模式相比行为模式而言,实际就是静止的,相对固定的,而随着B/S和互联网应用不断普及,Web 2.0和社会化媒体 以及游戏等大量频繁交互应用普及,相对静止的MVC模式已经不适合高度交互注重行为的应用了。DDD领域建模本身比较重视结构,它的实体 值对象和服务器是也是一种结构划分,但是没有强调对象职责行为的重要性, 阅读全文

MVC 优缺点

2013-06-22 17:04 by youxin, 371 阅读, 0 推荐, 收藏,
摘要:MVC是一个架构,或者说是一个设计模式,它就是强制性使应用程序的输入,处理和输出分开。将一个应用程序分为三个部分:Model,View,Controller。1、 MVC的优点 (1) 可以为一个模型在运行时同时建立和使用多个视图。变化-传播机制可以确保所有相关的视图及时得到模型数据变化,从而使所有关联的视图和控制器做到行为同步。 (2) 视图与控制器的可接插性,允许更换视图和控制器对象,而且可以根据需求动态的打开或关闭、甚至在运行期间进行对象替换。 (3) 模型的可移植性。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。需要做的只是在新平台上对视图和控制器进行新的修... 阅读全文

贫血模型or领域模型

2013-06-22 16:47 by youxin, 310 阅读, 0 推荐, 收藏,
摘要:参考:http://lifethinker.iteye.com/blog/283668http://www.uml.org.cn/mxdx/200907132.asphttp://www.ituring.com.cn/article/125http://blog.csdn.net/educast/article/details/7248891 阅读全文

贫血领域模型和充血领域模型

2013-06-22 16:39 by youxin, 1114 阅读, 0 推荐, 收藏,
摘要:这两个概念是早些时候Martin Fowler总结出来的两种常见模型设计类型,没有说谁好谁不好,为不同的模型类别选择合适的场景是设计者的工作。没有工具本身的问题,只有工具使用者的问题。贫血模型 (http://www.martinfowler.com/bliki/AnemicDomainModel.html)是指领域对象里只有get和set方法(POJO),所有的业务逻辑都不包含在内而是放在Business Logic层。 优点是系统的层次结构清楚,各层之间单向依赖,Client->(Business Facade)->Business Logic->Data Access( 阅读全文

转:命令和查询责任分离(CQRS)架构模式

2013-06-22 16:05 by youxin, 442 阅读, 0 推荐, 收藏,
摘要:读了“蓝皮书”距今差不多一年,它改变了我的软件开发和构建软件架构观。在我作为一名程序员期间,我尝试了许多不同的方式来构建软件。方法有很多,包括一个贫血的域模型(Anemic Domain Model)。构建贫血领域模型并无什么不妥,但对于较为复杂的业务逻辑应用,它可能不是最好的选择。最终结果只能是代码间高耦合的很多“意大利面条式的代码”。贫血领域模型使得其业务逻辑遍布整个代码,如果业务规则改变,需要经常更新多个地方的代码,想避免这种情况,编码时请牢记这点。“编程的时候,总是想着那个维护你代码的人会是一个知道你住在哪儿的有暴力倾向的精神病患者。”—— Martin Golding。典型的富领域模 阅读全文

命令查询分离原则Command-query separation principle

2013-06-22 13:08 by youxin, 2235 阅读, 0 推荐, 收藏,
摘要:在UML和模式应用一书中,发送给Die的roll消息之后跟随着第二个消息getFaceValue用于提取其新的faceValue,特别是:roll()方法是void的,没有返回值,例如:public void roll(){ faceValue=//生成随机数}public int getFaceValue(){ return faceValue;}为什么不将两个方法合并起来,使roll()方法返回新的faceValue呢?如下所示://为什么这种方法不好public int rolll(){faceValue=//生成随机数return faceValue;}第二种方式违反了命令-查询分离原 阅读全文

css 定义hr的几种样式

2013-06-18 21:09 by youxin, 7070 阅读, 0 推荐, 收藏,
摘要:<style type="text/css"> <!--.hr0{ height:1px;border:none;border-top:1px dashed #0066CC;}.hr1{ height:1px;border:none;border-top:1px solid #555555;}.hr2{ height:3px;border:none;border-top:3px double red;}.hr3{ height:5px;border:none;border-top:5px ridge green;}.hr4{ height:10px;bor 阅读全文

CI引入外部javascript和css

2013-06-18 20:01 by youxin, 495 阅读, 0 推荐, 收藏,
摘要:假定baseurl 为$config['base_url']='http://localhost/codeigniter/';调用<link rel="stylesheet" href="<?php base_url(); ?>css/default.css" type="text/css" />css放在根目录文件夹.注意,如果发生base_url,要载入url库。我们还可以这样做:<basehref="<?phpechobase_url()?>&q 阅读全文

CI URL 辅助函数 url helper

2013-06-17 20:19 by youxin, 861 阅读, 0 推荐, 收藏,
摘要:URL 辅助函数文件包含一些在处理 URL 中很有用的函数加载辅助函数本辅助函数通过如下代码加载:$this->load->helper('url');可用函数如下:site_url()返回站点的URL, 如果在config.php文件中指定了base_url会返回指定的值,否则自动获取。 当你将URI段作为参数传给这个函数时,index.php 文件名 (或者是你在config中自定义的index_page文件名) 会被加到URL后面, 而且会加上你在config中定义的url_suffix后缀。无论什么时候需要生成 URL ,都鼓励您使用该函数, 这样当您的根 阅读全文

PHP查看在线服务器与本地服务器支持函数差别

2013-06-17 18:54 by youxin, 469 阅读, 0 推荐, 收藏,
摘要:在本地开发好的程序、代码,当传到服务器后,经常会出现罢工的事情。这时候就要考虑开发环境和在线的环境是否完全一致了。这里所说的一致性,包括了容器的配置、php的配置等等。下面所要解决的只是其中一项,你的服务器环境是否支持你在本地开发的全部函数。首先在本地服务器执行如下代码,生成你在本地的php函数列表文件。$home = get_defined_functions();file_put_contents('data.txt',serialize($home['internal']));将生成的data.txt文件上传到服务器上,并且在同一目录下执行如下代码,将会输 阅读全文
上一页 1 ··· 162 163 164 165 166 167 168 169 170 ··· 269 下一页