浅谈工厂设计模式
设计模式
操作方法
- 01
基本概念: 1) Simple Factory模式属于创建型模式, 2) 简单工厂模式是由一个工厂(注意是一个!)对象决定创建出哪一种产品类的实例 (例如你到肯德基说你要鸡腿,要薯条,要饮料还是,,,这时肯德基是一 个工厂,客户端只需要点明自己要什么就行) 3)实现方式的实质:由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类 (这些产品类继承自一个父类或接口)的实例。 下面来看一个例子: 音乐盒接口IMusicBox: package SimpleFactory; public interface IMusicBox { public void play(); } 两种不同的音乐盒播放方式:ViolinBox(小提琴)和 PianoBox(钢琴): package SimpleFactory; public class ViolinBox implements IMusicBox { public void play() { System.out.println("拨放小提琴音乐^_^"); } } package SimpleFactory; public class PianoBox implements IMusicBox { public void play() { System.out.println("拨放钢琴音乐:)"); } } 下面是一个工厂MusicBoxFactory(Simple Factory的核心,在工厂中根据客户端指定的 参数动态创建不同的对象): 复制代码 package SimpleFactory; public class MusicBoxFactory { public static IMusicBox createMusicBox(String name) throws InstantiationException, IllegalAccessException, ClassNotFoundException{ // 这边使用的是Java的Reflection机制来产生实例 // 不过客户端不用管啦 // 以后就算改变了这边的程式,客户端程式是不用更改的 return (IMusicBox) Class.forName(name).newInstance(); } } 下面客户端就可以利用工厂模式:(利用工厂模式,客户端只需要对工厂指定你要创建的 对象的名字(参数),工厂就可以根据你指定的参数动态创建不同的对象) package SimpleFactory; public class MusicBoxDemo { public static void main(String[] args) throws Exception { // playMusicBox(MusicBoxFactory.createMusicBox("PianoBox")); // playMusicBox(MusicBoxFactory.createMusicBox("ViolinBox")); //利用工厂模式,客户端只需要对工厂指定你要创建的对象的名字(参数), 工厂就可以根据你指定的参数动态 //创建不同的对象。当然,这些不同的对象就有不同的表现(在本例中通过play 表示) playMusicBox(MusicBoxFactory.createMusicBox("SimpleFactory.PianoBox")); playMusicBox(MusicBoxFactory.createMusicBox("SimpleFactory.ViolinBox")); } public static void playMusicBox(IMusicBox musicBox) { musicBox.play(); } }