鎵璋?strong>鍥炶皟錛屽氨鏄鎴風▼搴廋璋冪敤鏈嶅姟紼嬪簭S涓殑鏌愪釜鍑芥暟SA錛岀劧鍚嶴鍙堝湪鏌愪釜鏃跺欏弽榪囨潵璋冪敤C涓殑鏌愪釜鍑芥暟CB錛?
瀵逛簬C鏉ヨ錛岃繖涓狢B渚垮彨鍋氬洖璋冨嚱鏁般備緥濡俉in32涓嬬殑紿楀彛榪囩▼鍑芥暟灝辨槸涓涓吀鍨嬬殑鍥炶皟鍑芥暟銆備竴鑸鏉ワ紝C涓嶄細鑷繁璋冪敤CB錛孋鎻愪緵CB鐨勭洰鐨勫氨鏄S
鏉ヨ皟鐢ㄥ畠錛岃屼笖鏄疌涓嶅緱涓嶆彁渚涖傜敱浜嶴騫朵笉鐭ラ亾C鎻愪緵鐨凜B濮撶敋鍚嶈皝錛屾墍浠浼氱害瀹欱鐨勬帴鍙h鑼冿紙鍑芥暟鍘熷瀷錛夛紝鐒跺悗鐢盋鎻愬墠閫氳繃S鐨勪竴涓嚱鏁癛鍛婅瘔S鑷繁
灝嗚浣跨敤CB鍑芥暟錛岃繖涓繃紼嬬О涓哄洖璋冨嚱鏁扮殑娉ㄥ唽錛孯縐頒負娉ㄥ唽鍑芥暟銆俉eb Service浠ュ強Java鐨凴MI閮界敤鍒板洖璋冩満鍒訛紝鍙互璁塊棶榪滅▼鏈嶅姟鍣ㄧ▼搴忋?/p>
涓涓氫織鐨勪緥瀛愩傛煇澶╋紝鎴戞墦鐢佃瘽鍚戜綘璇鋒暀闂錛屽綋鐒舵槸涓毦棰橈紝^_^錛屼綘涓鏃舵兂涓嶅嚭瑙e喅鏂規硶錛屾垜鍙堜笉鑳芥嬁鐫鐢佃瘽鍦ㄩ偅閲屽偦絳夛紝浜庢槸鎴戜滑綰?
瀹氾細絳変綘鎯沖嚭鍔炴硶鍚庢墦鎵嬫満閫氱煡鎴戯紝榪欐牱錛屾垜灝辨寕鎺夌數璇濆姙鍏跺畠浜嬫儏鍘諱簡銆傝繃浜哫X鍒嗛挓錛屾垜鐨勬墜鏈哄搷浜嗭紝浣犲叴楂橀噰鐑堢殑璇撮棶棰樺凡緇忔悶瀹氾紝搴旇濡傛榪欒埇澶勭悊銆傛晠浜?
鍒版緇撴潫銆傝繖涓緥瀛愯鏄庝簡“寮傛+鍥炶皟”鐨勭紪紼嬫ā寮忋?/span>
鐔熸倝MS錛峎indows鍜孹 Windows浜嬩歡椹卞姩璁捐妯″紡鐨勫紑鍙戜漢鍛橈紝閫氬父鏄妸涓涓柟娉曠殑鎸囬拡浼犻掔粰浜嬩歡婧愶紝褰撴煇涓浜嬩歡鍙戠敓鏃舵潵璋冪敤榪欎釜鏂規硶錛堜篃縐頒負“鍥炶皟”錛夈侸ava鐨勯潰鍚戝璞$殑妯″瀷鐩墠涓嶆敮鎸佹柟娉曟寚閽堬紝浼間箮涓嶈兘浣跨敤榪欑鏂逛究鐨勬満鍒躲?/p>
Java鏀寔interface錛岄氳繃interface鍙互瀹炵幇鐩稿悓鐨勫洖璋冦傚叾璇紿嶅氨鍦ㄤ簬瀹氫箟涓涓畝鍗曠殑interface錛岀敵鏄庝竴涓甯屾湜鍥炶皟鐨勬柟娉曘?/h3>
渚嬪錛屽亣瀹氬綋鏌愪竴浜嬩歡鍙戠敓鏃朵細寰楀埌閫氱煡錛屾垜浠彲浠ュ畾涔変竴涓猧nterface錛?br />
1 public interface InterestingEvent {
2 // 榪欏彧鏄竴涓櫘閫氱殑鏂規硶錛屽彲浠ユ帴鏀跺弬鏁般佷篃鍙互榪斿洖鍊?/span>
3 public void interestingEvent();
4 }
榪欐牱鎴戜滑灝辨湁浜嗕換浣曚竴涓疄鐜頒簡榪欎釜鎺ュ彛綾誨璞$殑鎵嬫焺grip銆?br />
褰撲竴浜嬩歡鍙戠敓鏃訛紝闇瑕侀氱煡瀹炵幇InterestingEvent 鎺ュ彛鐨勫璞★紝騫惰皟鐢?strong>interestingEvent() 鏂規硶銆?br /> 1 class EventNotifier {
2 private InterestingEvent ie;
3 private boolean somethingHappened;
4 public EventNotifier(InterestingEvent event) {
5 ie = event;
6 somethingHappened = false;
7 }
8 public void doWork() {
9 if (somethingHappened) {
10 // 浜嬩歡鍙戠敓鏃訛紝閫氳繃璋冪敤鎺ュ彛鐨勮繖涓柟娉曟潵閫氱煡
11 ie.interestingEvent();
12 }
13 }
14 }
鍦ㄨ繖涓緥瀛愪腑錛岀敤somethingHappened 鏉ユ爣蹇椾簨浠舵槸鍚﹀彂鐢熴?br />
甯屾湜鎺ユ敹浜嬩歡閫氱煡鐨勭被蹇呴』瑕佸疄鐜?strong>InterestingEvent 鎺ュ彛錛岃屼笖瑕佹妸鑷繁鐨勫紩鐢ㄤ紶閫掔粰浜嬩歡鐨勯氱煡鑰呫?br /> 1 public class CallMe implements InterestingEvent {
2 private EventNotifier en;
3 public CallMe() {
4 // 鏂板緩涓涓簨浠墮氱煡鑰呭璞★紝騫舵妸鑷繁浼犻掔粰瀹?/span>
5 en = new EventNotifier(this);
6 }
7 // 瀹炵幇浜嬩歡鍙戠敓鏃訛紝瀹為檯澶勭悊浜嬩歡鐨勬柟娉?/span>
8 public void interestingEvent() {
9 // 榪欎釜浜嬩歡鍙戠敓浜嗭紝榪涜澶勭悊
10 }
11 }
浠ヤ笂鏄氳繃涓涓潪甯哥畝鍗曠殑渚嬪瓙鏉ヨ鏄嶫ava涓殑鍥炶皟鐨勫疄鐜般?
褰撶劧錛屼篃鍙互鍦ㄤ簨浠剁鐞嗘垨浜嬩歡閫氱煡鑰呯被涓紝閫氳繃娉ㄥ唽鐨勬柟寮忔潵娉ㄥ唽澶氫釜瀵規浜嬩歡鎰熷叴瓚g殑瀵硅薄銆?/h3>
1. 瀹氫箟涓涓帴鍙?strong>InterestingEvent 錛屽洖璋冩柟娉?strong>nterestingEvent(String event) 綆鍗曟帴鏀朵竴涓?strong>String 鍙傛暟銆?/h4>
1 interface InterestingEvent {
2 public void interestingEvent(String event);
3 }
2. 瀹炵幇InterestingEvent鎺ュ彛錛屼簨浠跺鐞嗙被
1 class CallMe implements InterestingEvent {
2 private String name;
3 public CallMe(String name){
4 this.name = name;
5 }
6 public void interestingEvent(String event) {
7 System.out.println(name + ":[" +event + "] happened");
8 }
9 }
3. 浜嬩歡綆$悊鑰咃紝鎴栦簨浠墮氱煡鑰?br /> 1 class EventNotifier {
2 private List<CallMe> callMes = new ArrayList<CallMe>();
3
4 public void regist(CallMe callMe){
5 callMes.add(callMe);
6 }
7
8 public void doWork(){
9 for(CallMe callMe: callMes) {
10 callMe.interestingEvent("sample event");
11 }
12 }
13 }
4. 嫻嬭瘯
1 public class CallMeTest {
2 public static void main(String[] args) {
3 EventNotifier ren = new EventNotifier();
4 CallMe a = new CallMe("CallMe A");
5 CallMe b = new CallMe("CallMe B");
6 // regiest
7 ren.regist(a);
8 ren.regist(b);
9
10 // test
11 ren.doWork();
12 }
13 }

]]>