>  기사  >  웹 프론트엔드  >  JavaScript 디자인 패턴 클래식 프록시 패턴_javascript 기술

JavaScript 디자인 패턴 클래식 프록시 패턴_javascript 기술

WBOY
WBOY원래의
2016-05-16 15:13:531718검색

1. 에이전시 모델 컨셉

참고: 이름에서 알 수 있듯이 한 클래스는 메서드 기능을 수행하기 위해 다른 클래스를 대체하는 데 사용됩니다. 차이점은 프록시 모드가 클라이언트를 대신하여 프록시 개체 클래스를 초기화한다는 것입니다. , 데코레이션 모드는 인터페이스를 사용하거나 초기 데코레이터 매개변수 참조를 사용하여 실행합니다.

설명: 부동산 중개인은 판매자가 구매자에게 집을 판매하는 데 도움을 줄 수 있으며, 판매자는 판매 가격을 지정할 수도 있고 구매자가 사고 싶은 주택 유형을 제안할 수도 있습니다. 중간 단계를 처리하는 데 도움을 주세요. 마침내 거래가 성사됩니다. 중개인은 여러 주택 매매 및 임대 문제를 동시에 중개할 수 있습니다.

2. 프록시 모드의 역할과 주의사항

모드 기능:

1. 원격 프록시(하나의 객체가 서로 다른 공간에 있는 로컬 프록시 객체)

2. 가상 프록시(웹 페이지를 렌더링할 때 임시로 실제 이미지를 자리 표시자로 대체하는 등 필요에 따라 비용이 많이 드는 객체 생성)

3. 보안요원(확인된 객체에 대한 접근권한을 통제)

4. 지능형 안내(가비지 수집 메커니즘 등 기타 작업을 처리하기 위해 개체 에이전트 호출)

참고:

1. 프록시를 남용하지 마세요. 때로는 코드가 복잡해질 뿐입니다

3. 에이전트 모드 코드 및 실무 요약

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
//代理模式需要三方
//1.买家
function maijia(){
this.name = "小明";
this.money = "30万";
}
//2.中介
function zhongjie(){
}
zhongjie.prototype.maifang = function(){
//new fongdong(new maijia()).maifang("20万");
new fongdong(new maijia()).maifang("20万");
}
//3.卖家
function fongdong(maijia){
this.maijia_name = maijia.name;
this.maijia_money = maijia.money;
this.maifang = function(money){
// alert("收到了来自【"+this.maijia_name+"】"+money+"人民币");
alert("收到了来自【"+this.maijia_name+"】"+this.maijia_money+"人民币");
}
}
(new zhongjie()).maifang();
</script>
<script>
// A2B
function A(){
this.money = "20RMB";
}
function to(){
if(!(this instanceof to)){
return new to;
}
}
to.prototype.maifang = function(){
var a = new A();
new B().maifang(a.money);
}
function B(){
this.maifang = function(money){
alert("收到了钱"+money);
}
}
(new to()).maifang();
to().maifang();
</script>
</body>
</html>

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.