JAVA设计模式之-简单工厂模式(Simplae Factory)

JAVA设计模式之-简单工厂模式(Simplae Factory)

Factory method(工厂方法)是实例化对象的一种方法的名称。就象工厂一样,Factory method的任务是创建--或制造--对象。
下面对工厂模式进行简单的讲解:
从音乐盒开始讲起,音乐盒工厂(MusicBoxFactory)生产音乐盒(PianoBox和ViolinBox),当然还可以是其它的音乐盒,这些具体的音乐盒展现给客户(MusicBoxDemo)只是一个界面(IMusicBox),客户不需要知道音乐盒的具体实现功能,只要能play()就OK。
如下图所示:客户(MusicBoxDemo)依赖音乐盒的界面,而不必知道音乐盒是如何通过音乐盒工厂(MusicBoxFactory)生产的。
从下面的图我们进入简单的代码演示阶段:

IMusicBox.java
public   interface  IMusicBox{
public   void  play();

}
PianoBox.java
public   class  PinoBox  implements  IMusicBox{
public   void  play(){

System.out.println(
" 播放钢琴音乐 " );
}
}

ViolinBox.java
public   class  ViolinBox  implements  IMusicBox{
public   void  play(){

System.out.println(
" 播放小提琴音乐 " );
}
}
MusicBoxFactory.java
public   class  MusicBoxFactory{
/** *
使用java反射机制生成实例
客户端只需调用即可
方便维护和以后程序的升级扩展
*/
public   static  IMusicBox createMusicBox(String name) throws  InstantiationException,IllegalAccessException,ClassNotFoundException{

IMusicBox musicbox
= (IMusicBox)Class.forName(name).newInstance();

// 在这里还可以进行一些box的内部成员变量处理


return  musicbox;

}


}
MusicBoxDemo.java
public   class  MusicBoxDemo{
public   static   void  main(String[] args) throws   Exception{
PlayMusicBox(MusicBoxFactory.createMusicBox(
" PianoBox " )
);
PlayMusicBox(MusicBoxFactory.createMusicBox(
" VolinBox " )
);


}

public   static   void  PlayMusicBox(IMusicBox imusicbox){

imusicbox.play();

}



}

这样客户只需要知道音乐的界面即可,不需要知道如何生产的音乐盒。即使以后修改了Factory的生产模式,用户这里也是毫不影响。


你可能感兴趣的:(JAVA设计模式之-简单工厂模式(Simplae Factory))