帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > JAVA编程
J2EE相关设计模式讨论
作者:佚名 发布时间:2005-04-02 来源:不详
 
  设计模式,这个概念现
Helm, Ralph Johnson, and
of Re-Useable Object-Ori
、结构型模式和行为型模式
能在短时间内消化吸收掉,
出来的习惯用法。习惯要时
有这种意识,在项目中、学
果,你对Java JDK1.4 源码
明,http://www.javaresea
在是满天飞,大家手里面估计都
John Vlissides, in the book
ented Software",这本书。根据
。一共包括23个模式,在这里不
因为模式本身就是约定俗成的东
间去培养,去形成,所以大家不
习中开始用上几个看看,研究研
用到的设计模式感兴趣,可以到
rch.org/dn.jsp。
有,Erich Gamma, Richard
"Design Patterns - Element
其中的说法,有三种,创建型模式
一一列举。实际应用中,我们不可
西,依靠大家以往的项目经验总结
要急着去用所有的模式,但一定要
究模式给你会带来什么价值。但如
官方网站下载!这个地方有详细说


  在进入正题之前,我申
所以涉及到知识产权问题时
只用于学习、交流的目的。
明该文章没有任何商业目的,其
,如果有人将其用于商业目的,
谢谢合作。
中涉及到开源软件的一些源代码,
个人不负责该方面的责任。在这里


  但问题出来了,如何将
,我们要知道模式的适用场
方面,模式本身的理解消化
冷静分析一下,也不是没有
虑好自己的职业生涯,要想
…做好,这些都是基本功。
这些模式具体用到Java Project
合、引入模式给系统带来的好坏
吸收。再者,还有你的老板逼着
可能。我们在项目中,完成自己
把Java Coder、Java Developer

中呢?刚开始确实很头疼。一方面
,等等都需要我们去考虑的。另一
你完成任务-:)。等等。其实,
的工作是一方面,但另一方面要考
、Java Architect、或者什么的…


  学者,就是喜欢把1+1,这么简单的
,比如我们,看的是结果,技术的实作性
看看设计模式的UML图(说句实在话,大
也少。)、还有模式的什么意图,别名,
代码实例,。。。。。。。脑袋都晕掉了
问题用什么。。。。理论推导出来,作为技术工作者
。而大家在学设计模式中的过程中,往往脱离实践,
家的UML功底都不会太好吧,把它用于我们的UP估计
动机,适用性,结构,参与者,协作,效果,实现,
。大家是否给忘记了,这种GP,本来

  就很抽象,加上这么多条条框框,两
很不错,我学习过程中就是这样的。要不
。(模式的实现例子网络上有很多。Java
就内置了这种基于GP的编程模板,详细内
个字,“郁闷”。我们不妨从分析GP代码入手效果很
我们现在就看看一个例子。以行为型模式State为例
的实现也很多,比如,Together ControlCenter里面
容大家用用就知道了。)

  大家知道,State的用
起来似乎修改了他的类。我
SOFTWARE DESIGN PATTERNS
意在于,允许一个对象在其内部
们先看http://www.javacoder.n
CATALOGUE的State模式源码实
状态改变时改变它的行为。对象看
et/patterns.jsp 上提供的GOF
现。

  首先看接口类,State.java                                            
    public interface State {                          
      public void handle();                            
  }                                                                           

  以定义接口以封装与Conext(代码稍候陈述!)的一个特定状态相关的行为。    
  然后看,接口的实现类。第一个,ConcreteState1.java          
  public class ConcreteState1 impl
ements State {
   public void handle() {                                
     System.out.prin
tln("ConcreteState1.handle()
executing");
   }                                                                          
  }                                                                           

  第二个,ConcreteState2.java                                

  public class Concret
eState2 implements State {
   public void handle() {                                
     System.out.prin
tln("ConcreteState2.handle()
executing");
   }                                                                          
  }                                                                           

  这两个类实现了State接口。                                                
  然后再看,Context.java是如何将上述三个.java文件联系起来。    
  public class Context {                                  
      public static final int
STATE_ONE = 0;
      public static final int
STATE_TWO = 1;
       //大家注意,这句话很关键,该模式做手脚的地方!                    
      private Stat
e currentState = new Concret
eState1();
      public void request() {                        
          currentState.handle();                  
      }                                                                    

      public void
changeState(int state) {
        switch (state) {                                  
          case STATE_ONE:                                
            currentState
= new ConcreteState1();//关键点
            break;                                              
          case STATE_TWO:                                
            c
urrentState = new ConcreteSt
ate2();//关键点
            break;                                              
        }                                                                
      }                                                                    

  }                                                                           

  这样,写好4个.java文
样简单。
件后,其实您已经实现了State

设计模式,很有趣,对吧?就是这

  再看看如何使用该设计模式了。写一个Client.java看看。                
  [code]public class Client {                        
      public static void main(
String[] args) {
          // 构造Context                                      
          Context ctx = new Context();      
          // 唤起Context.request()                  
          ctx.request();                                  
          // 改变ctx的状态?为什么改变了呢?大家想想看。          
          ctx.
changeState(Context.STATE_TW
O);
          // 再次唤起Conte
xt.request(),结果大不一样。
          ctx.request();                                  
      }                                                                    
  }[/code]                                          
  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·Sun在开放源代码J2EE认证上又迈出  (2005-04-02)
 ·J2EE 1.4 application Server fo  (2005-04-02)
 ·《J2EE核心模式》(DAO模式)  (2005-04-02)
 ·J2EE 和 .NET之间的对比  (2005-04-02)
 ·J2EE初学者需要理解的问题  (2005-04-02)
 ·J2EE和XML为企业应用软件创造机会  (2005-04-02)
 ·J2EE1.4新特性之Servlet2.4新特性  (2005-04-02)
 ·J2EE1.4新特性之JDBC3.0的新特性  (2005-04-02)
 ·J2EE运行环境性能优化艺术之二  (2005-04-02)
 ·J2EE运行环境性能优化艺术之三  (2005-04-02)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·谈谈JDBC
·JDBC专题介绍
·JDBC接口技术
·利用weblogic的POOL(连接池)连接
·Jsp中调用Oracle存储过程的小例子
·JSP数据库操作例程
·JSP数据库连接大全
·用连接池提高Servlet访问数据库的效
·一种简单JDBC连接池的实现
·数据库连接池Java实现小结
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统