随笔-348  评论-598  文章-0  trackbacks-0
provide an interface for creating families of related or dependent objects without specifying their concrete classes
                                                   --Gamma, E., Helm, R., Johnson, R., Vlissides, J. Design Patterns: Elements of Reusable Object-Oriented Software, Boston: Addison-Wesley, 1995, p.87        

讲白了,就是面向抽象接口编程,每一组对象都实现同一个接口          
abstract class ResFactory {
   
abstract public DisplayDriver getDispDrvr();
   
abstract public PrintDriver getPrtDrvr();
}


class LowResFact extends ResFactory {
   
public DisplayDriver getDispDrvr() {
      
return new LRDD();
   }

   
public PrintDriver getPrtDrvr() {
      
return new LRPD();
   }

}


class HighResFact extends ResFactory {
   
public DisplayDriver getDispDrvr() {
      
return new HRDD();
   }

   
public PrintDriver getPrtDrvr() {
      
return new HRPD();
  }

}


比如说我需要一个显卡驱动和打印机驱动,高档机和低档机驱动都不一样,但我不想用很多switch来选择,这样很麻烦,而且扩展更麻烦。那我就定义一个抽象类,将我需要调用的资源全部放在里面,初始化类的时候我们可以先声明一个
ResFactory factory;
当我们需要使用高档机的时候就
factory=new HighResFact();
使用低档机的时候就
factory=new LowResFact();

这样,就可以很方便的调用自己想调用的对象,而且不用考虑有没有提供相应方法,在扩展和修改的时候更加方便,因为抽象和实现全部分开了,这也是我们在平常编程当中需要注意的。


                                                         

---------------------------------------------------------
专注移动开发

Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
posted on 2007-04-26 21:11 TiGERTiAN 阅读(1153) 评论(0)  编辑  收藏 所属分类: Design Patterns

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问