铏界劧緗戜笂鍟嗗簵褰㈠紡澶氭牱,姣忎釜绔欑偣鏈夎嚜宸辯殑鐗硅壊,浣嗕篃鏈夊叾涓鑸殑鍏辨?鍗曞氨"鍟嗗搧鐨勫彉鍖?浠ヤ究鍙婃椂閫氱煡璁㈡埛"榪欎竴鐐?鏄緢澶氱綉涓婂晢搴楀叡鏈夌殑妯″紡,榪欎竴妯″紡綾諱技Observer patern.
鍏蜂綋鐨勮,濡傛灉緗戜笂鍟嗗簵涓晢鍝佸湪鍚嶇О 浠鋒牸絳夋柟闈㈡湁鍙樺寲,濡傛灉緋葷粺鑳借嚜鍔ㄩ氱煡浼氬憳,灝嗘槸緗戜笂鍟嗗簵鍖哄埆浼犵粺鍟嗗簵鐨勪竴澶х壒鑹?榪欏氨闇瑕佸湪鍟嗗搧product涓姞鍏bserver榪欐牱瑙掕壊,浠ヤ究product緇嗚妭鍙戠敓鍙樺寲鏃?Observer鑳借嚜鍔ㄨ瀵熷埌榪欑鍙樺寲,騫惰兘榪涜鍙婃椂鐨剈pdate鎴杗otify鍔ㄤ綔.
Java鐨凙PI榪樹負涓烘垜浠彁渚涚幇鎴愮殑Observer鎺ュ彛Java.util.Observer.鎴戜滑鍙鐩存帴浣跨敤瀹冨氨鍙互.
鎴戜滑蹇呴』extends Java.util.Observer鎵嶈兘鐪熸浣跨敤瀹?
1.鎻愪緵Add/Delete observer鐨勬柟娉?
2.鎻愪緵閫氱煡(notisfy) 鎵鏈塷bserver鐨勬柟娉?
import java.util.Observable; public class product extends Observable { private String name; private float price; public String getName() { public void setName(String name) { } public float getPrice() { public void setPrice(float price) { } //浠ヤ笅鍙互鏄暟鎹簱鏇存柊 鎻掑叆鍛戒護. } public static void main(String[] args) { |
鎴戜滑娉ㄦ剰鍒?鍦╬roduct綾諱腑 鐨剆etXXX鏂規硶涓?鎴戜滑璁劇疆浜?notify(閫氱煡)鏂規硶, 褰撹皟鐢╯etXXX,瀹為檯涓婂氨瑙﹀彂浜唍otisfyObservers鏂規硶,榪欏皢閫氱煡鐩稿簲瑙傚療鑰呭簲璇ラ噰鍙栬鍔ㄤ簡.
涓嬮潰鐪嬬湅榪欎簺瑙傚療鑰呯殑浠g爜,浠栦滑絀剁珶閲囧彇浜嗕粈涔堣鍔?
//瑙傚療鑰匩ameObserver涓昏鐢ㄦ潵瀵逛駭鍝佸悕縐?name)榪涜瑙傚療鐨?br>public class NameObserver implements Observer{ 銆銆private String name=null; 銆銆public void update(Observable obj,Object arg){ 銆銆銆銆 name=(String)arg; 銆銆銆銆} 銆銆} } //瑙傚療鑰匬riceObserver涓昏鐢ㄦ潵瀵逛駭鍝佷環鏍?price)榪涜瑙傚療鐨?br>public class PriceObserver implements Observer{ 銆銆private float price=0; 銆銆public void update(Observable obj,Object arg){ 銆銆銆銆 price=((Float)arg).floatValue(); 銆銆銆銆} 銆銆} } |