大漠驼铃

置身浩瀚的沙漠,方向最为重要,希望此blog能向大漠驼铃一样,给我方向和指引。
Java,Php,Shell,Python,服务器运维,大数据,SEO, 网站开发、运维,云服务技术支持,IM服务供应商, FreeSwitch搭建,技术支持等. 技术讨论QQ群:428622099
随笔 - 238, 文章 - 3, 评论 - 117, 引用 - 0
数据加载中……

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的生产模式,用户这里也是毫不影响。


posted on 2008-12-14 22:57 草原上的骆驼 阅读(381) 评论(0)  编辑  收藏 所属分类: 设计模式-DP


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


网站导航: