>  기사  >  웹 프론트엔드  >  자바스크립트 패턴설계_자바스크립트 스킬의 팩토리 패턴에 대한 자세한 설명

자바스크립트 패턴설계_자바스크립트 스킬의 팩토리 패턴에 대한 자세한 설명

WBOY
WBOY원래의
2016-05-16 18:27:471229검색

패턴 유형: 팩토리 패턴
패턴 설명: 객체를 동적으로 생성하는 데 사용되는 일반적인 패턴 중 하나
적용 범위: 런타임 중에 상호 교환 가능한 일련의 하위 클래스 중에서 선택해야 하는 클래스
참고: 구현 인터페이스에서는 서로 다른 하위 클래스가 동일하게 처리될 수 있도록 팩토리 패턴을 적절하게 사용하되 형식에 얽매이지 않고 본질을 이해해야 합니다.
핵심 사항: 함수/클래스/하위 클래스로 구축된 선택기
본질: 함수를 선택기로 사용
일반 사용 형태:
독립적인 선택기로 존재:

코드 복사 코드는 다음과 같습니다.

function FactoryMode(index){
switch(index){
케이스 "index1" :
return new Class1();break;
case "index2":
return new Class2();break
case "index3":
return new Class3( ) ;break;
default:return new ClassComm();break;
}
}

또는 클래스의 메서드로 존재:
코드 복사 코드는 다음과 같습니다.

var MainClass=function(){};//Main 클래스 생성자
MainClass.prototype={
FactoryMode:function(){}//Subclass selector
}

또는 암시적 선택, 즉 사용자의 주관적인 선택에 따라 선택되지 않습니다.

코드 복사 코드는 다음과 같습니다.

var xmlRequest=function() {
if(this.isOffOnline()){
xhr= new OfflineHandler();
}//지금 네트워크를 사용할 수 없으면 캐시 가능한 AJAX 객체를 생성하세요
else if( this.isHightLatency()){
xhr= new QueuedHandler();
}//네트워크 지연이 큰 경우 AJAX 객체 형식으로 대기열을 생성합니다
else {
xhr=new SimpleHandler() ;
}//네트워크인 경우 일반적으로 간단한 AJAX 개체를 만듭니다.
interface.ensureImplements(xhr,AjaxHandler)
//향후 작업이 원활하게 진행될 수 있도록 개체가 인터페이스를 구현하는지 확인합니다.
return xhr;
}

확장:

팩토리 패턴의 핵심은 선택자를 객체 선택으로 사용할 수 있을 뿐만 아니라 함수 선택, 클래스 선택, 매개변수 선택

코드 복사 등의 함수 선택

코드는 다음과 같습니다. :


var addEvent=(function (){
if(!-[0,]){
return function(elem,type,handler){
elem[type handler.toString()]=handler;
elem.attachEvent ("on" type,elem[type handler.toString])
}}//if IE
else {
return function( elem,type,handler){
elem.addEventListener(type ,handler,false);
}
}
})();//
의 다중 판단 방지
클래스 선택: 코드 복사

코드는 다음과 같습니다.


var 적절한Class=function(){
if(조건 A 일치) return Class1 ;
else if(조건 B 일치) return Class2; else return ClassComm; >매개변수 선택:



기능 국가 (국가){
if(country=="China")
this.config={};//기본 매개변수 1 설정
else if(contry=="America")
this. config={};//매개변수 2 설정
else if()
..........//대기
}
Country.prototype={}

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