티스토리 뷰
* 자바스크립트 옵저벼 패턴
document.writeln = function( str ) {
document.write( str + "<br/>" );
}
function Caps() {
this.obserable = new Array();
this.price = '2000';
}
Caps.prototype = {
add : function(observer) {
this.obserable[this.obserable.length] = observer;
},
remove : function(observer) {
for(var i=0;i<this.obserable.length;i++) {
if(this.obserable[i] == observer) {
this.obserable.splice(i,1);
}
}
},
notify : function(){
for(var i=0;i<this.obserable.length;i++) {
this.obserable[i].update(this);
}
},
updatePrice : function(newPrice) {
this.price = newPrice;
this.notify();
},
getPrice : function(){
return this.price;
}
};
function goldStore() {
this.store = 'goldStore';
}
goldStore.prototype = {
'update' : function(subject) {
document.writeln(this.store + ':' + subject.getPrice());
}
}
function footStore() {
this.store = 'footStore';
}
footStore.prototype = {
'update' : function(subject) {
document.writeln(this.store + ':' + subject.getPrice());
}
}
function familyMart() {
this.store = 'familyMart';
}
familyMart.prototype = {
'update' : function(subject) {
document.writeln(this.store + ':' + subject.getPrice());
}
}
var caps = new Caps();
var goldStore = new goldStore();
var footStore = new footStore();
var familyMart = new familyMart();
caps.add(goldStore);
caps.add(footStore);
caps.add(familyMart);
caps.notify(); //통지
caps.updatePrice('5000'); // 가격 변경 통지
caps.remove(footStore); //remove
caps.notify();
'웹개발 > Javascript' 카테고리의 다른 글
의존성 역전 원칙 ( Dependency Inversion Principle ) (0) | 2011.10.21 |
---|---|
Command 패턴 정리 (0) | 2011.10.18 |
자바스크립트 위젯 만들기 (0) | 2011.09.27 |
정규표현식 정후방 탐색 (0) | 2011.07.18 |
Javascript 클로저 ~ 예시 (0) | 2011.01.12 |
댓글