??xml version="1.0" encoding="utf-8" standalone="yes"?>heyzo高清在线,成人免费图片免费观看,在线精品视频视频中文字幕http://www.aygfsteel.com/97030530/archive/2006/03/30/38367.html逝去的年?/dc:creator>逝去的年?/author>Thu, 30 Mar 2006 13:57:00 GMThttp://www.aygfsteel.com/97030530/archive/2006/03/30/38367.htmlhttp://www.aygfsteel.com/97030530/comments/38367.htmlhttp://www.aygfsteel.com/97030530/archive/2006/03/30/38367.html#Feedback0http://www.aygfsteel.com/97030530/comments/commentRss/38367.htmlhttp://www.aygfsteel.com/97030530/services/trackbacks/38367.html    q是一U对单个Ҏ(gu)的参C用控制反转,把控制权和差错处理交l框架来处理。严格的_(d)q是一UStrategy模式的特例,他们的区别就在于接口的复杂度不同?br />   在Spring的JdbcTemplate中就使用了这U模式。JdbcTemplate实现了query()Ҏ(gu)Q参数是SQL字符Ԍ和一个实C回调接口的,在dresultSet每行时被调用?br />

1 public   interface  RowCallbackHandler 
2 {
3      void  processRow(ResultSet rs)  throws  SQLException;
4 }
 


  query()Ҏ(gu)装了对JDBC底层API的调用?br />

public   void  query(String sql, RowCallbackHandler callbackHandler)  throws  JdbcSqlException 
{
    Connection con 
=   null ;
    PreparedStatement ps 
=   null ;
    ResultSet rs 
=   null ;
    
try  
    
{
        con 
=   < code to get connection >
        ps 
=  con.prepareStatement (sql);
        rs 
=  ps.executeQuery();
        
while  (rs.next()) 
        
{
            callbackHandler.processRow(rs);
        }

        rs.close();
        ps.close();
    }
 
    
catch  (SQLException ex) 
    
{
        
throw   new  JdbcSqlException( " Couldn't run query [ "   +  sql  +   " ] " , ex);
    }

    
finally  
    
{
        DataSourceUtils.closeConnectionIfNecessary(
this .dataSource, con);
    }

}


   在上面的例子中,JdbcSqlExceptionl承了java.lang.RuntimeExceptionQ也是说调用者可以选择L获它Q但是这不是必须的。假如实C回调接口的子c里的方法出错,而且不是RuntimeException的子c,也就是必LL(fng)异常Q但是query()Ҏ(gu)中在逻辑上是没有办法捕获它的。所以Rod_Johnson把接口定义成JdbcTemplate的inner interface。这可以JdbcTemplate可以捕获它?br />   回调Ҏ(gu)也是框架的一U基本方法,比如java.io.FilecM的listFiles(FilenameFilter filter),FilenameFilter是一个接口,我们实现q个接口中的Ҏ(gu)accept(File dir, String name) Q这是一个典型的回调Ҏ(gu)?br />   观察者模式的使用W合开闭原则,q且分离了关注点。这U对模块修改开发,影响关闭的原则促q了AOP面向斚w~程的发展。Spring中的AOP可能是q种思想的实玎ͼ个h猜测而已。   ?br />    把方法的参数攑֜一个类中,q样以后要增加参数的话,不用修改Ҏ(gu){֐Q感觉很q净Q唯一可能的缺Ҏ(gu)可能Ҏ(gu)能有所下降Q不q很。如果没有用EJB的话Q应该差不多?br />
   对异常的处理Q分为checked和unchecked异常Qchecked异常是承java.lang.Exception的。Unchecked异常l承java.lang.RuntimeException。Rod_Johnsond在对出现异常后,E序不能处理Q只能给予没用的提示时用RuntimeExceptionQ因为RuntimeException容器?x)自动处理。关于异常的详细说明Q我也没看明白,希望那位大虾能指Ҏ(gu)炏V?/font>

备注Q本文主要内Ҏ(gu)源于Rod_Johnson的大作,强烈看原版!



]]>
Template模式和Strategey模式http://www.aygfsteel.com/97030530/archive/2006/03/29/38131.html逝去的年?/dc:creator>逝去的年?/author>Wed, 29 Mar 2006 12:49:00 GMThttp://www.aygfsteel.com/97030530/archive/2006/03/29/38131.htmlhttp://www.aygfsteel.com/97030530/comments/38131.htmlhttp://www.aygfsteel.com/97030530/archive/2006/03/29/38131.html#Feedback0http://www.aygfsteel.com/97030530/comments/commentRss/38131.htmlhttp://www.aygfsteel.com/97030530/services/trackbacks/38131.html         在学?fn)Spring的过E中l常看到一些大虾推荐阅读Rod_Johnson?lt;Expert_One-on-One_J2EE_Design_and_Development>?据说此书的第四章每个学java人都要看?好不Ҏ(gu)搞到pdf?可惜是E文的,中文的搞不到,没办法只好硬着头皮看下厅R?br />   W四章主要讲的是面向对象的设计模?怎么采用一致的~码公约,怎么利用也有的系l?q对于理解Spring框架有很大的帮助!因ؓ(f)q是Spring之父的编E思想?:
   关于接口的好处及(qing)l合模式的有?我这里就不说了?br />   Template模式:适用范围,我们知道某个业务或算法的步骤,但是不知道怎么把每步的序。Template模式采用在abstractcM有个Public and final的方法封装了调用每步的顺?也就是说控制了工作流E。所有的l承cM只要实现每步的具体Ҏ(gu)。这是控制反转的一U表玎ͼ以前都是我们在程序中去调用API中的Ҏ(gu),现在是我们实现API某个cM的抽象方法给该类调用!q种控制反{的机?是框架的代码基础.比如,EJB中的Init()和destory()Ҏ(gu){等.Spring框架中的Ҏ(gu)据持久层的实现就是很好的例子!
下面把书中的例子COPY?
  AbstractOrderEJB父类实现了商业逻辑,包括用户是否金额现和对大的订单q行打折,palceOrder()Ҏ(gu)是那个工作方法?/font>

abstract   class  AbstractOrderEJB
{
    
public   final  Invoice placeOrder ( int  customerId, InvoiceItem[] items)
        
throws  NoSuchCustomerException, SpendingLimitViolation 
    
{
        
int  total  =   0 ;
        
for  ( int  i  =   0 ; i  <  items. length; i ++
        
{
            total 
+=  getItemPrice (items [i])  *  items [i] .getQuantity();
        }

        
if  (total  >  getSpendingLimit (customerId) )
        
{
            getSessionContext() .setRollbackOnly();
            
throw   new  SpendingLimitViolation (total, limit);
        }

        
else   if  (total  >  DISCOUNT_THRESHOLD) 
        
{
            
//  Apply discount to total
        }

        
int  invoiceId  =  placeOrder (customerId, total, items);
        
return   new  InvoiceImpl (iid, total);
    }


    
protected   abstract   int  getItemPrice(InvoiceItem item);

    
protected   abstract   int  getSpendingLimit(customerId) throws  NoSuchCustomerException;

    
protected   abstract   int  placeOrder( int  customerId,  int  total,InvoiceItem[] items);
  }

   getItemPriceQgetSpendingLimitQplaceOrderq三个方法,是protected and abstract的,由子cL实现?/font>
   Strategey模式和Template模式比较怼.用Strategey模式对上个例子进行改?把三个单独的Ҏ(gu)攑օ一个接口中,工作方法进行如下修?

 1 public   class  OrderEJB
 2 {
 3      private  DataHelper dataHelper;
 4      public   void  setDataHelper (DataHelper newDataHelper) 
 5      {
 6          this .dataHelper  =  newDataHelper;
 7     }

 8      public   final  Invoice placeOrder ( int  customerId, InvoiceItem[] items)
 9          throws  NoSuchCustomerException, SpendingLimitViolation 
10      {
11          int  total  =   0 ;
12          for  ( int  i  =   0 ; i  <  items.length; i ++
13          {
14             total  +=   this .dataHelper.getItemPrice(items[i])  *
15             items[i].getQuantity();
16         }

17          if  (total  >   this .dataHelper.getSpendingLimit(customerId)) 
18          {
19             getSessionContext() .setRollbackOnly();
20              throw   new  SpendingLimitViolation(total, limit);
21         }
 
22          else   if  (total  >  DISCOUNT_THRESHOLD) 
23          {
24              //  Apply discount to total
25         }

26          int  invoiceId  =   this .dataHelper.placeOrder (customerId, total, items);
27          return   new  InvoiceImpl (iid, total);
28     }

29 }

   Stratery模式比Temlater模式复杂点,但是它具有更高的灉|性,对于实际目一些流E的控制有很好的作用Q这是本人的观点Q不一定正,仅供参考?br />   
在下面的情况?用Stratery模式比Temlater模式更好:
1,每步都是可变?br />2,实现每步的类需要一个独立的l承体系
3,实现每步的类要和其他的类打交?br />4,实现每步的类要实现多态?br />
备注Q本文主要内Ҏ(gu)源于Rod_Johnson的大作,强烈看原版!



]]>
E序员的个h发展http://www.aygfsteel.com/97030530/archive/2006/02/28/32927.html逝去的年?/dc:creator>逝去的年?/author>Tue, 28 Feb 2006 14:30:00 GMThttp://www.aygfsteel.com/97030530/archive/2006/02/28/32927.htmlhttp://www.aygfsteel.com/97030530/comments/32927.htmlhttp://www.aygfsteel.com/97030530/archive/2006/02/28/32927.html#Feedback0http://www.aygfsteel.com/97030530/comments/commentRss/32927.htmlhttp://www.aygfsteel.com/97030530/services/trackbacks/32927.html

      q是我的blog的第一文章,转蝲一D늽上的l典文章Q时L查自己望q个方向努力。既焉择了远方,p勇往直前Q?BR>
技?amp;理&做h&行业

每天晚上Q请你问自己q些问题Q?BR>1Q?今天我是否克服了技术上新的困难Q?BR>2Q?今天我是否多M一些新书?
3Q?今天我是否就某方面的问题与hq行了交?
4Q?今天我是否多认识了一个新同事或新朋友q准备与他们保持联络Q?BR>5Q?今天我是否更多的接触到n处的行业需求,现状Q和发展Q?/U>

_N技?SPAN style="FONT-WEIGHT: 400">

      _N技术是技术h员的Ҏ(gu)要求Q也是技术h员h生发展的必经之\Q只有首先精掌握一门技术,才能触类旁通的掌握其他技术。精通技术不仅仅是ؓ(f)了精通技术,而是Z触类旁通,Z掌握_N技术的学习(fn)Ҏ(gu)Q研I方法,体会(x)w处技术顶点的感受和境界,q样Q下一ơ准备或需要进入另一个领域时Q才?x)有明确的目标?BR>
      Z_N技术,p有以工作Z的精。不dq于频繁的换工作Q常常被认ؓ(f)是不热爱工作Q不适应环境Q或者不忠诚的表玎ͼ。以工作ZQ才?x)投入更多的_֊和时_(d)才能够飞快成长,成ؓ(f)该方面的能手。以工作ZQ是朝着技术高峰阔步迈q的享受q程?BR>
      如果仅仅的是以工作ؓ(f)乐,仅仅L(fng)自己喜欢工作Q而没有“朝着技术高峰阔步迈q”,则是一U浪贏V要做工作和生活的有心hQ才不会(x)q信技术,才会(x)避免骄傲Q才不会(x)在达到某个水q以后停步不前。不仅要做有心hQ还要学?x)研I。研I该门技术的发展方向Q该门技术最好的学习(fn)Ҏ(gu)Q在该门技术上取得H出成就的道路,和激p己沿着正确的方向前q的诀H。做好了q些问题的研IӞ׃(x)在以工作Z的境界中做出凡的成l?BR>
MQ?BR>1Q?反对不认真对待技术?BR>2Q?反对不热爱工作,一心旁鹜?BR>3Q?做生zd工作的有心h?BR>
懂得理

      懂得理Q既要学?x)管理,也要学?x)配合理。那些对所有h和所有事情都Ҏ(gu)求疵的h是不适应C会(x)的,也是不容易成功的。懂得管理,既要学会(x)理工程Q进度,q程Q资源,需求分析,客户交流Q,又要学会(x)理人。要重视团队Q重视团队的合作Q重视团队的文化Q重视团队的凝聚力,重视理者的个h感染力?BR>
      在用户不能提出明的需求的情况下,要综合经验,替用h出明的需求?BR>
      W合标准的过E控ӞҎ(gu)论的实际应用可以引导工程有一个可期望的好l果。否则就是运气的功劳?BR>      资源的合理配|,一个每个h舒适工作的环境Q不要让你的l员不得不L把精力放在环境徏讄问题上,是让人做出更大成l的捷径?BR>
      与h畅快交流的能力,成ؓ(f)软g人员必备的素质之一。懂得行业的知识׃q里开始?BR>
      那些单纯学过理的hQ无入那一个行业,都需要不断的q速的学习(fn)一些关于该行业的专门知识,臛_是名词术语,基本原理Q关键技术,主要应用。这L(fng)了解初步理知识的hQ一定不要对技术h员指手画脚,否则一定得不到应有的认同,反之Q如果他们从q程本n的流E或者方法论{方面提出徏议,可以更好的体现自己的h(hun)倹{?BR>
q入行业

      软g工作Q离不开行业,其是应用Y件。一个仅仅懂得实现技术的人,是不够的。所以一定要拓展你的知识Q对你所处在的行业有一个更全面Q更准确Q更实质性的了解?BR>
      软g人员看到需求分析,常常惛_如何d现它Q而不?x)认真的ȝI这份需求,站在用户的角度上来做更多的工作,q是值得软g人才所注意的?BR>
      研究你所在的行业Q也需要有一U系l的Ҏ(gu)。了解其中的关键Ҏ(gu)q入q个行业的捷径。了解触?qing)该行业更多斚w的关键点Q是掌握q个行业的必l之路。对该行业做pȝ的ȝ分析Q是深入该行业的目的。初步的研究成果l过更多的提炼和交流Q就?x)成为金子般的智慧?BR>
以下是几点徏议:(x)

      从点滴做赗先做好那些你力所能及(qing)的工作。标准化你的行业。你所处的行业虽然定Q但是每一家公司的需求各不相同。掌握他们做事情的流E,可以帮助你做好标准化。同时学?fn)那些该行业的标准,以用L(fng)标准为标准,更加深刻的理解标准,是代替用户做好标准化的方法?BR>      掌握核心技术。Q何行业都有核心技术。掌握某一Ҏ(gu)心技术,可以让你进入这个行业ƈ在其中生存,反之仅仅尝辄止Q就?x)让你遭遇失败,抱怨不公?BR>
影响你职业发展的几项能力
1Q?研究问题的能?BR>2Q?影响他h的能?BR>3Q?个h履历

L(fng)信以下观?BR>1Q教育不是万能的。希望学校或者Q何一个教育机构ؓ(f)你准备所有的知识Q能力,水^Q是不可能的。最好的大学是自己和无字书?BR>2Q?成长在工作中。工作中的表现和U篏才是人生N的实际动力?BR>
从今天vQ请做好
1Q?培养你自己更q泛的兴,q坚持你的h生目?BR>2Q?ȝ你的演讲能力
3Q?多认识朋友,以他们ؓ(f)?BR>4Q?培养你的q见卓识


处处深入学习(fn),跟踪技术顶?q求技术顶?!

转蝲?http://gocom.primeton.com/blog/index.php?op=ViewArticle&articleId=15&blogId=9

]]>
վ֩ģ壺 | | ī| | | ˫| | | | ʲ| ɽ| | ޳| | կ| | | | ݳ| ʯ| | ԭ| | | | ƽ| ¡| Ϫ| «Ϫ| ̨| ٲ| | | | | Զ| | | ʯ| | |