涓嬮潰瀵瑰伐鍘傛ā寮忚繘琛岀畝鍗曠殑璁茶В錛?br />
浠庨煶涔愮洅寮濮嬭璧鳳紝闊充箰鐩掑伐鍘傦紙MusicBoxFactory錛夌敓浜ч煶涔愮洅(PianoBox鍜孷iolinBox),褰撶劧榪樺彲浠ユ槸鍏跺畠鐨勯煶涔愮洅錛岃繖浜涘叿浣撶殑闊充箰鐩掑睍鐜扮粰瀹㈡埛錛圡usicBoxDemo錛夊彧鏄竴涓晫闈紙IMusicBox錛夛紝瀹㈡埛涓嶉渶瑕佺煡閬撻煶涔愮洅鐨勫叿浣撳疄鐜板姛鑳斤紝鍙鑳絧lay()灝監K銆?br />
濡備笅鍥炬墍紺猴細瀹㈡埛(MusicBoxDemo)渚濊禆闊充箰鐩掔殑鐣岄潰錛岃屼笉蹇呯煡閬撻煶涔愮洅鏄浣曢氳繃闊充箰鐩掑伐鍘傦紙MusicBoxFactory錛夌敓浜х殑銆?br />
浠庝笅闈㈢殑鍥炬垜浠繘鍏ョ畝鍗曠殑浠g爜婕旂ず闃舵錛?br />


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("鎾斁灝忔彁鐞撮煶涔?/span>");
}
}
MusicBoxFactory.java
public class MusicBoxFactory{
/***
浣跨敤java鍙嶅皠鏈哄埗鐢熸垚瀹炰緥
瀹㈡埛绔彧闇璋冪敤鍗沖彲
鏂逛究緇存姢鍜屼互鍚庣▼搴忕殑鍗囩駭鎵╁睍
*/
public static IMusicBox createMusicBox(String name)throws InstantiationException,IllegalAccessException,ClassNotFoundException{
IMusicBox musicbox=(IMusicBox)Class.forName(name).newInstance();
//鍦ㄨ繖閲岃繕鍙互榪涜涓浜沚ox鐨勫唴閮ㄦ垚鍛樺彉閲忓鐞?/span>
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鐨勭敓浜фā寮忥紝鐢ㄦ埛榪欓噷涔熸槸姣笉褰卞搷銆?br />

]]>