ip-1000

少说、多听、多做、多思考!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

SimpleFactory

 

public interface IMusicBox {
    public void play();
}

 

public class PianoBox implements IMusicBox {

    public void play() {
        System.out.println("播放钢琴音乐。");

    }

}

 

public class ViolinBox implements IMusicBox {

    public void play() {
        System.out.println("播放小提琴音乐。");

    }

}

 

public class IMusicBoxFactory {
    public static IMusicBox createMusicBox(String name) throws InstantiationException, IllegalAccessException, ClassNotFoundException{
        //使用的是Java的Reflection机制来产生实例
        return (IMusicBox) Class.forName(name).newInstance();
    }
    

}

 

TestDemo类:

public static void main(String[] args) {
        try {
            playMusicBox(IMusicBoxFactory.createMusicBox("com.dpt.factory.sample.PianoBox"));
            playMusicBox(IMusicBoxFactory.createMusicBox("com.dpt.factory.sample.ViolinBox"));
        } catch (InstantiationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
    
    public static void playMusicBox(IMusicBox imb){
        imb.play();
    }

 

参考地址:

设计模式http://www.riabook.cn/doc/designpattern/
posted on 2012-08-01 14:52  ip-10000  阅读(254)  评论(0编辑  收藏  举报