软的件工程设计模式.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软的件工程设计模式

五、行为模式(Behavioral Pattern) 使用策略模式的一些建议: 1) 系统需要能够在几种算法中快速的切换。 2) 系统中有一些类它们仅行为不同时,可以考虑采用策略模式来进行重构 3) 系统中存在多重条件选择语句时,可以考虑采用策略模式来重构。 Java的布局管理 Container 中有关的代码: LayoutManager layoutMgr; //对布局管理器接口的引用 //获得在使用的具体布局管理器 public LayoutManager getLayout() { return layoutMgr; } //设置要使用的具体布局管理器 public void setLayout(LayoutManager mgr) { layoutMgr = mgr; if (valid) { invalidate(); } } 下面是布局管理器接口的代码: public interface LayoutManager { void addLayoutComponent(String name, Component comp); ……… Dimension minimumLayoutSize(Container parent); void layoutContainer(Container parent); } 而具体的布局管理器就是对上面接口方法的实现和扩展,我这里不再展现给大家了,有兴趣的可以查看JDK 源代码。 来看看对它的使用吧,以下是示意性代码: public class FlowLayoutWindow extends JApplet { public void init(){ Containter cp = getContentPane(); cp.setLayout(new FlowLayout()); for(int i = 0 ; i 20 ; i++) cp.add(new JButton(Button + i)); } ...... } 五、行为模式(Behavioral Pattern) 5.10 状态(State)模式 定义 允许一个对象在其内部状态改变时改变它的行为。 组成 使用环境(Context)角色:客户程序是通过它来满足自己的需求。它定义了客户程序需要的接口;并且维护一个具体状态角色的实例,这个实例来决定当前的状态。 状态(State)角色:定义一个接口以封装与使用环境角色的一个特定状态相关的行为。 具体状态(Concrete State)角色:实现状态角色定义的接口。 适用情况: 一个对象的行为取决于它的状态, 并且它必须在运行时刻根据状态改变它的行为。 一个操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态。 五、行为模式(Behavioral Pattern) strategy 模式在结构上与state模式非常相似,但是在概念上,他们的目的差异非常大。 区分这两个模式的关键是看行为是由状态驱动还是由一组算法驱动,这条规则似乎有点随意,但是在判断时还是需要考虑它。 通常,State 模式的“状态”是在对象内部的,Strategy 模式的“策略”可以在对象外部,不过这也不是一条严格、可靠的规则。 策略模式中,算法是否变化完全是由客户程序开决定的,而且往往一次只能选择一种算法,不存在算法中途发生变化的情况。 而状态模式如定义中所言,在它的生命周期中存在着状态的转变和行为得更改,而且状态变化是一个线形的整体;对于客户程序来言,这种状态变化往往是透明的。 五、行为模式(Behavioral Pattern) 5.11模板方法(Template Method)模式 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 这里的算法的结构,可以理解为你根据需求设计出来的业务流程。特定的步骤就是指那些可能在内容上存在变数的环节。可以看出来,模板方法模式也是为了巧妙解决变化对系统带来的影响而设计的。类的行为模式 组成 抽象类(Abstract Class):定义了一到多个的抽象方法,以供具体的子类来实现它们;而且还要实现一个模板方法,来定义一个算法的骨架。该模板方法不仅调用前面的抽象方法,也可以调用其他的操作,只要能完成自身的使命。 具体类(Concrete Class):实现父类中的抽象方法以完成算法中与特定子类相关的步骤。 五、行为模式(Behavioral Pattern) 五、行为模式(Behavioral Pattern) 适用情况 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。 各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。其实这可以说是一种好的编码习惯了。

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档