浅析JAVA设计模式(一)

       第一写技术博客,只是想把自己一天天积累的东西与大家分享。今天在看《大型网站架构和java中间件》这本书时,其中提到代理模式的动态代理。作为java中间件的一个重要基础,我觉的有必要整理和分析下java的23种设计模式,如有不对的地方,请大家留贴指正。

     一、设计模式的分类

   总体来说,Java的设计模式分为三个大类(创建型模式、结构型模式、行为型模式)

   创建型模式工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

   结构型模式适配器模式、装饰模式、代理模式、外观模式(又称门面模式)、桥接模式(桥梁模式)、组合模式、享元模式。

   行为型模式策略模式、模版方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

   在讲设计模式前,先来说说java设计模式的六大原则。

    二、JAVA设计模式的六大原则

    1、单一职责原则:SRP(Single Responsibility Principle)职责单一,定义为有且只有一个因素引起类或接口的改变。顾名思义就是说针对不同的类或接口定义方法单一的方法,这里的单一不是说只定义一个方法,是指一类行为的方法。

例如:类A负责两个不同的职责:职责A1,职责A2。当由于职责A1需求发生改变而需要修改类A时,有可能会导致职责A2功能发生改变,导致程序出现异常。这时就需要将类A拆分为两个不同的类或者接口去执行不同的职责。

举个例子说明下:

 1 public interface IStudent {      
 2      //身高
 3     void tHeigh(double height);      
 4      double getHeigh();
 5       //体重 
 6     void setWeight(double weight); 
 7      double getWeight();
 8       //吃饭
 9     boolean brunch(boolean hungry);
10       //游戏
11     boolean playGame(boolean free);  
12 } 

这个接口定义的职责就很不清晰。因此我们可以将它拆分为两个接口IStudentBo,IStudentAction。

属性接口IStudentBO:

public interface IStudentBO {
      //身高
      void setHeight(double height); 
       double getHeight();
      //体重
     void setWeight(double weight);
      double getWeight();
  } 

 行为接口IStudentAction:

public interface IStudentAction{

boolean brunch(boolean hungry);
boolean playGame(boolean free);

}

然后各自定义实现类去实现各种的接口方法。这样将属性方法和行为方法分割开来,各自类不会受到多点的因素而发生改变。这个就是所谓的单一职责。是不是很简单呢。当然我们只能尽量去遵守单一职责原则。具体还得看项目需求。至少在后面讲到的部分设计模式就违背了单一职责原则。

 

posted @ 2015-03-31 23:42  人丑就该多读书  阅读(838)  评论(1编辑  收藏  举报