- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1.定义阐述
设计模式:是经过验证的,用于解决特定环境下、重复出现的特定问题的解决方案。经
过验证:说明这个设计模式是相对比较优秀的方案,是可行的方案,这样才具有学习、研究
和使用价值。
功能型设计模式:如单例(保证类的实例唯一)、工厂(选择实现)、值对象(封装数据)、
dao(屏蔽变化)等等。
架构型设计模式:结构性的设计模式,只是让程序更具有结构化。
2.mvc 三部分内容及各部分功能如下
①model:vo+逻辑层:可以理解为后台部分。
功能:封装应用状态、响应状态查询、暴露应用功能。
功能:产生l 响应、请求模型更新、提供l 表单用于用户请求。
对比:纯jsp 页面中事件处理与页面展示混杂在一起,mvc 中事件处理由controller 承
担,从而达到逻辑与页面相分离的效果。
③controller:事件处理过程。
功能:验证l 请求的数据、将用户数据与模型更新相映射、选择用于响应的视图。
3.mvc 演化过程及示例
①没有使用mvc,做纯jsp 应用时,结构不太合理,在jsp 页面写的代码太多,尤其是
控制器代码,页面和逻辑太过于混杂,因此引入一个中间层——控制器来专门处理控制器代
码。
②标准的mvc 的组件关系:
下面先看个标准的mvc 单机版的示例:
观察者设计模式java 代码示例的如下:
⑴根据前面的内容抽象,首先必须有个被观察的对象,即目标对象叫做mysubject.java:
public cla mysubject extends observable{
private string content=;
public string getcontent() {
return content;
}
public void setcontent(string content) {
this.content = content;
//需要通知所有观察者
this.setchanged();
this.notifyobservers();
}
}
观察者观察的为目标对象的内容content,当内容改变了即有人setcontent 需要通知所
有的观察者。
⑵其次应该有些观察者,叫做myobserver:
public cla myobserver implements observer{
private string name;
public myobserver(string name) {
this.name=name;
}
@override
public void update(observable o, object msg) {
//推模型
system.out.println(name+推过来的====+msg);
//拉模型
system.out.println(name+推过来的====+((mysubject)o))
}
}
myobserver 实现一个update 回调方法,即myobserver 去观察mysubject,观察到后采取
的处理即这个update 方法。这里的观察者又有两种模型,一种是被观察者主动推过来的消息
即推模型,另一种就是观察者主动去拉内容即拉模型。其实观察者模式也叫出版订阅模式,
推模型即订报的意思,即报刊发行商将报纸送上门服务,拉模型即某个时刻大家主动去报刊
亭买报的这种模型。
⑶客户端测试代码,client.java:
public class client {
public static void main(string[] args) {
//创建一个被观察的目标对象
//创建观察者
//注册观察者
subject.addobserver(ob2);
subject.addobserver(ob3);
//报社出报纸
subject.setcontent(观察者模式);
} (下转第97 页)
(上接第125 页)}
首先创建一个目标对象,然后创建三个观察者,然后注册观察者相当于订报纸,然后报
社出报纸即内容改变时触发观察者,当被观察的对象改变时
文档评论(0)