??xml version="1.0" encoding="utf-8" standalone="yes"?> 旉Q?007-07-18 Cache 应用的原理大致是Q初始化时将原数据导?/span>Cache中或惰性加载;l常被查询(点击率高Q的|前Q当数据d超q?/span>Cache定w后,调整定w大小或清理不l常使用Q点ȝ低)的数据;数据过有效期,及时清理Q对于查询失败的数据Q需CHECK一下?/span> 单的数据容器Q将需要缓存的数据保存臛_独的容器Qƈ在一定的条g下进行数据同步。同步的Ҏ大致?/span>2U:启用一个时间线E,定期集中查、处理各个容器的周期同步操作Q或者由各个容器单独l护自n的周期和同步操作?/span> 前者统一处理Q不会有额外的开销Q缺Ҏd一个新的容器,都需要添加到同步U程中;后者单独处理,实现h比较快捷、没有Q何约束,而且互不影响Q但使用的时候有额外的处理和对象开销?/span> 当然Q单独处理ƈ不代表就是所有的业务逻辑都在各容器中控制执行Q可以用代理机制来解决q个问题?/span> 静态代理:代理对象与被代理的对象都必须实现同一个接口,在代理对象中可以实现CHECK{服务,q在需要的时候再调用被代理的对象Q这样代理对象就只保留业务相兌责?/span> 动态代理:JDK1.3以后开始支持动态代理,处理者的cd?/span>java.lang.ref.InvocationHandlerc,可以使用一个处理者(HandlerQ服务于各个对象?/span> 动态代理相Ҏ率低些,集合静态代理机Ӟ数据容器大致程如下Q?/span> 所有的数据容器都实?/span>Container接口Q定义生命周期、同步数据时的时间戳Q同步方法和d数据的方法;定义一个静态代理类Q在查询数据的时候,查数据容器是否过期,q期则调用容器的同步Ҏ?/span> cd如下Q?/span> 序列囑֦下: 样例代码如下Q?/span> Container container = new StaticProxy( EntityContainer.getInstance() ); int[] arr = (int[]) container.getOne("025"); 了解AOP的,很容易就会想?/span>pointcutQ?/span>advisorQ?/span>MethodBeforeAdviced{等Q原理类|略?/span> Q全文完Q?/span>
来自Q?/span>http://www.anymobile.org
l常使用的数据一般都会缓存v来,提高效率。对于数据量比较大的Q如囄、资讯类Q可以采用缓?/span>CacheQ烦引的机制处理Q而对于比较简单的数据Q可以通过单的数据容器q行~存。当Ӟ它们最l一般都存放?/span>Hashtable ?/span> HashMap{容器中?/span>
MVC Q即 Model-View-Controller Q“模?/span> - 视图 - 控制器”,?/span> Xerox PARC 在八十年代ؓ~程语言 Smalltalk Q?/span> 80 发明的一UY件设计模式,最初是用来构徏用户界面。它包括三类对象Q模?/span> Model 是应用对象(数据和应用规则)Q视?/span> View 是它在屏q上的表C,控制?/span> Controller 定义用户界面对用戯入的响应方式?/span>
2?span style="FONT: 7pt 'Times New Roman'"> MVC 特征
特征一Q视图与模型分离Q一旦模型的数据发生了变化,模型通知它的视图Q而视囑ְ于模型通信以访问相关的数据Q?/span>
特征二:视图可以嵌套?/span>
3?span style="FONT: 7pt 'Times New Roman'"> MVC 中的设计模式
3.1 View-Model 关系与观察者模?/span>
观察者( Observer Q模式:定义对象间的一U一对多的依赖关p,以便当一个对象的状态发生改变时Q所有依赖于它的对象都得到通知q自动刷新?/span>
MVC 通过建立一个“定?/span> / 通知”机制将视图和模型分,一个模型可以有多个视图Q当模型的数据改变后会通知它的所有视图?/span>
3.2 View-View 关系l合模式
l合Q?/span> Composite Q模式:对象组合成树Şl构以表C“整体-部分”的层次l构Q得对单个对象和复合对象的使用h一致性?/span>
MVC ?/span> View cȝ子类 CompositeView cL支持嵌套视图?/span> MVC 一些对象划Zl,q将该组对象当作一个对象来使用?/span>
3.3 View-Controller 关系与策略模?/span>
{略Q?/span> Strategy Q模式:定义一pd的算法,把它们一个个装hQƈ且它们可相互替换。算法的变化可以独立于用者?/span>
MVC 响应机制封装在 Controller 对象中, MVC 允许在不改变视图外观 View 的情况下改变视图对用戯入的响应方式?/span> View 使用 Controller 的某个实例来实现一个特定的响应{略Q实行不同的响应{略需要用不同?/span> Controller 实例替换卛_?/span>
4?span style="FONT: 7pt 'Times New Roman'"> MVC 框架
MVC 框架把一个应用的输入、处理、输出流E按?/span> Model ?/span> View ?/span> Controller 的方式进行分,q样一个应用被分成三个层——视囑ֱ、控制层和模型层?/span>
比较常见?/span>
MVC
框架有:
Struts
?/span>
Webwork
?/span>
Tapestry
?/span>
JSF
?/span>
Spring MVC
{?br />
资料Q?br />《设计模式》 GOF
MVC在Webpȝ中的模式与应?http://dev2dev.bea.com.cn/techdoc/20031194.html
MVC模式 http://www.itisedu.com/phrase/200604231324325.html
旉Q??xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /?>
来自Q?span lang="EN-US">http://www.anymobile.org
1?span style="FONT: 7pt 'Times New Roman'"> 何谓模式
“每个模式就是一条由三部分组成的规则Q它表示了一个特定环境、一个问题和一个解x案之间的关系?/span> ”-Q《徏{的永恒之道 ?/span> (Christopher Alexander)
模式Q就是对特定场景中,不断重复发生的问题,以及该问题的解决Ҏ的整体抽象描q?/span>
2?span style="FONT: 7pt 'Times New Roman'"> 设计原则
̔ 开闭原?/span> (OCP Q?/span> Open-Closed Principle)
是面向对象可复用的基矟뀂模块、方法和cd该对扩展是开攄Q而对更改是封闭的Q对可变性进行封装?/span>
̔ 里氏代换原则 (LSP Q?/span> Liskov Substitution Principle)
是承复用的基石。在M父类出现的地斚w可以用它的子cL替代。在实际设计cȝ阶层体系l构Ӟq是一条很重要的原则?/span>
̔ 依赖反{原则 (DIP Q?/span> Dependence Inversion Principle)
针对接口~程Q要依赖于抽象,不要依赖于具体的实现Q也叫控制反转, IoC ?/span>
̔ 接口隔离原则 (ISP Q?/span> Interface Segregation Principle)
使用多个专门的接口L比用单一的L口要好?/span>
̔ 合成 / 聚合复用原则 (CARP Q?/span> Composite or Aggregate Reuse Principle)
聚合Q表C拥有或整体与部分的关系?/span>
合成Q更强的聚合关系?/span>
量使用和成 / 聚合而不是承来实现复用 , ?/span> Has-A ”替代?/span> Is-A ”(l承Q?/span>
̔ q米Ҏ?/span> (LoD Q?/span> Law of Demeter)
一个对象应当对其他对象可能少的了解。降低各个单元的耦合Q提高系l的可维护性?/span>
3?span style="FONT: 7pt 'Times New Roman'"> GOF 设计模式
“设计模式是对被用来在特定场景下解决一般设计问题的cd怺通信的对象的描述。”-Q?/span> Design Patterns ?/span> ( Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides )
设计模式充分利用语言优势Q站在更高的角度d视我们的设计Q但是不要ؓ了模式而设计?/span>
按照模式的目的和范围准则Q?/span> GOF 众多的设计模式分ؓ 3 c,?/span> 23 个设计模式?/span>
3.1 创徏型( Creational Q?/span>
抽象工厂Q?/span> Abstract Factory Q?/span> O
生成器( Builder Q?/span> O
工厂ҎQ?/span> Factory Method Q?/span> O
原型Q?/span> Prototype Q?/span> O
单gQ?/span> Singleton Q?/span> O
3.2 l构型( Structural Q?/span>
适配器( Adapter Q?/span> C O
桥接Q?/span> Bridge Q?/span> O
l合Q?/span> Composite Q?/span> O
装饰Q?/span> Decorator Q?/span> O
外观Q?/span> Façade Q?/span> O
享元Q?/span> Flyweight Q?/span> O
代理Q?/span> Proxy Q?/span> O
3.3 行ؓ型( Behavioral Q?/span>
责Q链( Chain Responsibility Q?/span> O
命oQ?/span> Command Q?/span> O
解释器( Interpreter Q?/span> C
q代Q?/span> Iterator Q?/span> O
中介者( Mediator Q?/span> O
备忘录( Memento Q?/span> O
观察者( Observer Q?/span> O
状态( State Q?/span> O
{略Q?/span> Strategy Q?/span> O
模板ҎQ?/span> Template Method Q?/span> C
讉K者( Visitor Q?/span> O
4?span style="FONT: 7pt 'Times New Roman'"> 如何使用设计模式
1) 学习模式Q考虑设计模式是怎样解决问题以及怺的关联性;
2) L合适的对象Q决定对象的_度Q制定对象接口,描述对象之间的关p;
3) 使用设计模式q行优化Q权衡性能和灵zL;
4) 只有当模式提供的灉|性真正需要时Q才有必要用;
5) 设计不能q就模式Q模式ؓ设计服务?/span>
参考:
?/span> Design Patterns ?/span> Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
?/span> Java 与模式》阎?/span>
旉Q?/span>
来自Q?/span> http://www.anymobile.org
1?span style="FONT: 7pt 'Times New Roman'">软gq程
随着软gpȝ的规模和复杂性的增加Q其开发成本和风险随之增加QY件的质量问题已成为制UY件发展的关键因素之一?/span>
所谓Y件过E,卌Y仉目的开发过E,是指软g生命周期中,用于开发和l护软g产品的一pdq程Q它与团队的l织理以及开发技能相辅相成,全面提升软g产品的质量?/span>
q年来,软gq程日益得到重视Q国际Y件界的敏捗统一热也在持l升温?/span> 与传l的开发过E相比,敏捷q程更强调快速灵zd应,dq接和适应变化Q主张更紧密的客户与开发商协作Q以Zؓ本的可持l发展,典型的有 XP Q极限编E)?/span> FDD Q特征驱动开发){;l一软gq程?/span> RUP Z表,采用 OO 技术对软g开发过E本w进行业务徏模,集成了P代开发、用例驱动?/span> UML 可视化徏模?/span> OOAD 、架构设计、项目管理等许多L先进的当代Y件工艺?/span>
在Y仉目开发过E中Q应该能够识别、分析不同Y仉目的特点Q采用相寚w合的开发实跉|适应软g开发过E,保证对Y件开发的有效支持Q如 RUP ?/span> XP 的融合?/span>
2?span style="FONT: 7pt 'Times New Roman'"> XP Q极限编E?/span>
极限~程Q?/span> eXtreme Propgramming Q?/span> XP Q是?/span> Kent Beck ?/span> 1996 q开创,是一U演q式的原型化ҎQ以最大化发挥人的能量为核心目标,以“小步快走”的逻辑指导开发,h沟通高效、设计简单、反馈迅速等特点Q是一U轻量、敏Lq程Ҏ?/span>
极限~程Z四个价值目标:沟通( communication Q、简?/span> (simplicity) 、反?/span> (feedback) 和勇?/span> (courage) Q由 12 个最佛_践ؓq四个h值提供支持?/span>
极限~程的生命周期包?/span> 4 个基本活动:~码 (coding) 、测?/span> (testing) 、聆?/span> (listening) 、设?/span> (designing) ?/span>
2.1 4 个h值目?/span>
沟通:让开发h员集体负责所有代码ƈl队工作Q鼓׃客户及团队内部保持沟通?/span>
化:鼓励只开发当前的功能Q避免过多的文档Q专注于最化解决ҎQ做好ؓ为新Ҏ改变设计,在系l隐d代码规范下不断重构的准备?/span>
反馈Q通过单元试和功能测试获得快速反馈?/span>
勇气Q提倡积极面对现实和处理问题的勇气,拥抱变化?/span>
2.2 12
个最佛_?/span>
Q图? XP最佛_践)
有计划的开发:通过l合使用优先U“故事”和技术估,定下一版本的功能?/span>
型发布Q以的增量版本l常向客户发布Y件?/span>
pȝ隐喻Q隐L一个高层次的系l构惻I需要不断的l化架构Q来指导全部开发?/span>
单设计:通过保持代码单从而保证设计简单。不断的在代码中L复杂点ƈ且立刻进行移除?/span>
试驱动Q“先试Q后~码”。用L写测试内容以?/span> " 故事 " q行试。程序员~写试内容来发C码中的Q何问题。在~写代码前先~写试内容?/span>
重构Q这是一简化技术,用来U除代码中的重复内容和复杂之处?/span>
l对~程Q团队中的两个成员用同一台计机开发所有的代码。一个h~写代码或者驱动,另一个h同时审查代码的正性和可理解性?/span>
集体代码所有权QQ何h都拥有所有的代码。提高代码透明度,增强团队合作_?/span>
持箋集成Q每天按d多次创徏和集成系l,随着需求变化,q行不断的回归测试?/span>
每周 40 时工作ӞE序员在疲劳时无法保证最高效率。连l两周加班是l对不允许的Q否则会影响工作效率?/span>
现场客户Q至有一名真实的客户全天候工作于开发环境中Q帮助定义系l、编写测试内容ƈ回答问题?/span>
~码规范Q程序员采用l一的编码规范?/span>
M来说Q?/span> XP 部分满?/span> CMM2~3 U关键过E域 (KPA) 的要求, XP 侧重与过E和技术, CMM 更注重组l和理?/span>
3?/strong> FDD Q特征驱动开?/span>
特征驱动开发( Feature Drive Develop Q?/span> FDD Q, Together 创始?/span> Peter Coad 所创。通过特征来制定开发计划,以每日构Zؓ核心Q强调按特征分步开发和交付。一个特征就是一个小的、具有客户h值的功能Q通常表示?/span> <action><result><object> ?/span>
4?/strong> RUP Q?/span> Rational l一q程
q代软g开发的发展背景QY件的不确定和高风险等Ҏ,使得传统的瀑布式开发力不从心;q代有助于尽快发现和解决风险QP代有助于控制目的节奏,加快反馈Q增强项目的控制力度Q实现过E的有序化;q代W合Z对事物的认识逐步加深Q解决问题的能力随经验逐步提高?/span>
Rational l一q程Q?/span> Rational Unified Process Q?/span> RUP Q,是用例驱动、以体系l构Z心,q代、增量的软g开发过E。适合大、中型项目?/span>
RUP 采用C软g开发的一些最佛_践,作ؓ一U降低开发新软g所带来的内在风险的方式。这?strong>最佛_?/strong>包括Q?/span>
1) q代开发;
2) 理需求;
3) 使用Zlg的构Ӟ
4) 可视建模Q?/span>
5) 持箋的质量验证;
6)
控制变更?/span>
RUP 是一个P代过E,定了Q何Y件开发项目的四个阶段Q初始阶Dc精化阶Dc构建阶D和交付阶段。每个阶D包括一ơ或多次q代Q每一ơP代都会生成更加接q最l品的可执行版本?/span>
a 、初始阶D:识别和规遉K目的主要风险Q徏立用例模型框Ӟq制定里E碑日期的阶D计划;
b 、精化阶D:分析问题领域Q徏立健全的体系l构基础Q编刉目计划,淘汰目中最高风险的元素Q完成部分优先最高的用例开发;
c 、构建阶D:分ؓ多个q代Q逐步完成不同优先U的用例开发,核心 Case-> 高风?/span> Case-> ơ核?/span> Case-> 其它 Case Q?/span>
d
、交付阶D:q行各种功能、性能试Q进行品化、部|Ԍ完成整个pȝ的开发工作?/span>
Q图? RUP概述图)
RUP q代开发过E?/strong>Q?/span>
a 、第一ơP?/span>
1) 捕获需?/span>
2) 建立初始的领域模?/span>
3) 建立用例模型框架
4) 制定开发计?/span>
b 、第二次q代
1) 关键用例?/span> Robustness 分析与交互徏?/span>
2) 体系l构设计
3) 建立cL?/span>
4) 关键用例的开发与试
5) 完善用例模型
c 、第 n ơP?/span>
完成所有用例的分析、设计与开发?/span>
d 、最后的q代
1) 整体试Q进行各U功能、性能和压力测试?/span>
2) 部v与安装:生成相应的部|图?/span>
3) 产品化:q行一些品化的包装?/span>
注:每一ơP代之后,都应该交付一个可以运行的中间版本?/span>
Q图? RUPq代)
5?span style="FONT: 7pt 'Times New Roman'"> SPP Q精q行q程
_q行q程Q?/span>
Simplified Parallel Process
Q?/span>
SPP
Q,?/span>
CMMI 3
U以内各q程域的内容和要求作了“精”处理,包括
19
个过E域?/span>
40
余个规程和近
60
个文档模?/span>
。强调在产品生命周期之内Q项目管理过E、项目研发过E和机构支撑q程“ƈ行”开展?/span>
Q图? SPPQ?br />
软gq程改进解决ҎQ?/span> SPIS Q――林锐发明?/span>
核心l成部分
1) 软gq程改进咨询服务Q?/span>
2) 软g工程与项目管理培训;
3) Z Web 的集成化目理工具Q?/span> Future ?/span>
Future 采用 CMMI ?/span> SPP 为参考标准。主要功能包括项目规划、项目监控、质量管理、配|管理、需求管理、日常工作管理等?/span>
|站Q?/span> http://www.chinaspis.com
从公司的长远发展出发Q通过对公司内员工展开针对性的培训Q以使他们不断获取新的知识和相关技能,提升整体研发能力Q于
二?/span>
培训目的和内?/span>
通过培训Q掌握目前常用的体系l构设计ҎQƈ能够灉|应用Q掌握媄响Y件体pȝ构设计的各种目标和应对策略;熟练掌握一个真实的软g开发过E,q能够具体地?/span> RUP 的规范过E应用到实际的系l实C?/span>
培训分ؓ四天Q第一天讲解Y件架构,W二天讲解设计模式和商业机密Q第三天讲解 RUP Q第四天讲解架构设计中的技术问题?/span>
四天中培训的主要内容有:
1?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">
软g架构设计的理Z实践Q?/span>2?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">
设计模式和体pd建;3?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal"> 商业机密Q?/span>
4?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal"> RUP 的构件实C理Q?/span>
5?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal"> 架构设计中的技术问题分析?/span>
三?/span>
培训日程
旉
|
培训内容
|
下午 |
软g架构设计的基概念 初始阶段的设计问?/span> |
需求分析与概念建模 架构分析与设?/span> |
|
下午 |
c设计与设计模式 架构设计的进一步讨?/span> |
软g架构和架构师 商业机密 |
|
下午 |
RUP 评?/span> RUP 的实质分?/span> RUP 的概q?/span> |
RUP 最佛_践和案例教学 大型项目的层设计?/span> RUP |
|
下午 |
概要设计和架构体p选择 物理和逻辑架构分步 J2EE 体系 |
Spring ?/span> Hibernate
|
四?/span>
体会和计?/span>
在四天的培训评中,集合讲师的案例,深入学习了Y件架构设计、统一q程和设计模式三个方面的l合应用技术?/span>
q次培训的内容多、时间紧Q让我获益匪。我感受很深的主要有以下几点Q?/span>
1 、Y件的架构设计是对软g、硬件、网l、运营、政{等软g设计中的需求和要素q行决策Q在l一q程里面Q架构调研和架构设计l称为架构分析)。Y件架构设计是一个系l工E,它需要系l构架师有很宽的知识面,从需求分析、架构设计到c设计甚至代码实现都需要有透彻的理解。架构的关键?b>拥抱变化而设?/b>?/span>
2 、Y件架构师是技术负责,是解x案的提供者;与项目经理合作,制定计划Q决定成员,l织团队Q保证项目按计划完成。架构师最重要的素质是把握重点?/span>
3 ?/span> Rational Unified Process Q?/span> RUP Q?/span> Rational l一q程Q,是用例驱动、以体系l构Z心,q代、增量的软g开发过E?/span>
RUP
的Y件开发分为四个阶D:
a
、初始阶D:识别和规遉K目的主要风险Q徏立用例模型框Ӟq制定里E碑日期的阶D计划;
b
、精化阶D:分析问题领域Q徏立健全的体系l构基础Q编刉目计划,淘汰目中最高风险的元素Q完成部分优先最高的用例开发;
c
、构建阶D:分ؓ多个q代Q逐步完成不同优先U的用例开发,核心
Case->
高风?/span>
Case->
ơ核?/span>
Case->
其它
Case
Q?/span>
d 、交付阶D:q行各种功能、性能试Q进行品化、部|Ԍ完成整个pȝ的开发工作?/span>
每次q代之后Q都应该交付一个可以运行的中间版本 ?/span>
4 、Y件设计中存在不断重复出现Q可以用某种相同方式解决的问题,也可以按照某U模式进行识别,q且可以在这个模式的基础上创建特定的解决Ҏ。设计模式是充分利用语言优势Q站在更高的角度d视我们的设计Q但?b>不要Z模式而设?/b>?/span>
5
、合理、规范的文档很重要,也很必要Q如术语表,对功能性需求Ş成的用例模型和系l特性列表文档,技术备忘录Q记录设计动机和原理Q,问题卡等{?br />
最后,计划×月×日 14:00 ~ 18:00 在大会议室对R&D部门开展主题ؓ“面向对象的软g开发”的内部培训Q目录如下: