- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
粗浅看Tomcat中设计模式分析编程开发技术.doc
粗浅看Tomcat中设计模式分析-编程开发技术
粗浅看Tomcat中设计模式分析
原文出处:吴士龙
简介
Tomcat中运用的许多经典设计模式,如模版模式、工厂模式和单例模式等。通 过学习它们的实践运用能给我们以后的程序设计起到一定的借鉴作用。
外观
外观设计模式在Tomcat中有多处使用,在Request和Response对象封装中、 Standardwrapper 到 ServletConfig 封装屮、ApplicationContext 到 ServletContext封装中等都用到了这种设计模式。
原理
这么多场合都用到了这种设计模式,那这种设计模式究竟能冇什么作用呢?顾 名思义,就是将一个东西封装成一个外观好与人家更容易进行交流,就像一个国 家的外交部一样。
这种设计模式主要用在一个大的系统中有多个子系统组成时,这多个子系统肯 定要涉及到相互通信,但是每个子系统又不能将自己的内部数据过多的暴露给其 它系统,不然就没有必要划分子系统了。每个子系统都会设计一个外观,把别 的系统感兴趣的数据封装起來,通过这个外观來进行访问。这就是外观设计模 式存在的意义。
外观设计模式示意图如下:
Client只能访问到Fa?ade中提供的数据是外观设计模式的关键,至 于Client 如何访问Fa?ade和Subsystem如何提供Fa?ade外观设 计模式并没有规定 死。
Tomcat 中的 demo
Tomcat中外观设计模式使用的很多,因为Tomcat中有很多不同组件,每个组 件要相互交互数据,用外观模式隔离数据是个很好的方法。
下面是Request上使用的外观设计模式:
3停R的“疔? Object
3
停R的“疔
? Object 尹tAttrb/HSWing n/rne}
SetvIetPe^^Mt request
( Enurveration getAHrib^teMarre?()
? ( ReQ^estFacdJe(Reqijest requeU)
? SUhng get Char ^cler Ercodn^Q
■ voiddearO
■ vptaj s^tCh?ctef ErxQ dng($Ulng enw)
}
■ Ob|X 9KAttrfcut^5tnng wir@)
■ sm getCortertleng^O
:》Ersbafeg 尹lAttrbt/efJmesO
? Sthg get Concent Type)
? Strng geCChat acxet Enrcdng[)
? Ser ^etlrccitStf earn oetlnputStreamO
? void setChar a^erEn:odngt5biD2. .?
? 5tnir3 oetP 吉 ameterfStoina ranre)
? nt aetContentLerqthO
0 Strng oetCtcrtT 沖(〉
$k HttpRequ?tro:a(k
a HttpRcquest httrRequwt
■ Caog[)8tCo 也 esO
long yetQ 或 eU5kr《SUinji na^ne)
Sling gHuader fSbrog natre)
p Em^rrer 誠ion ^eUieeders(5 bir^ n^rne) t Eror^r 歆ion 9HHwd*rNarn?0
irt 9etJntH?^d?r(Strm^ name)
Stirg getMettodf)
Htt^cquestFxjd€HttpReoje9: rc
String getAuthTypeO
CooteO gctCootoO
lorg getO秋 eHgdertShig name)
5tcing gerHeader(9yng rvsrnej
i. fnjneifltbn Mme)
( EriJTBidtbn gdHMderNnft()
kt ortlritHraifcf (String nme)
SUro gttAuchon^ionO0 vad setAuthonzatiorStrre a Ccnner^nr grtComortetOvoid ?btCxn ector(Ccnn?:lCenlext jet Cent extO0 void s0tCoriext(Corr r?t ci 0 FlterCh^n 9*FiterCh9fi()void seCFiUfChaEFIlerChO f^CpReguevcid addCo(*3c(Co:^ e a ■ vx)d ?dcHo3dcr(S^nng cvoid addlccdie(lo:ate loc曲1 addParcme^ei(5brvoid dearCookiCTOYfliddcflrHMder
文档评论(0)