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>