> 웹 프론트엔드 > JS 튜토리얼 > JavaScript 디자인 패턴의 팩토리 메소드 패턴 소개

JavaScript 디자인 패턴의 팩토리 메소드 패턴 소개

PHPz
풀어 주다: 2018-09-30 09:06:47
원래의
1538명이 탐색했습니다.

이 글에서는 주로 JavaScript 디자인 패턴 중 팩토리 메소드 패턴을 소개합니다. 이 글에서는 간단한 팩토리 패턴, 다중 팩토리 메소드 패턴 등에 대해 설명합니다. 필요한 친구들이 참고할 수 있습니다

1. 간단한 팩토리 패턴

설명: 동일한 인터페이스에 대한 구현 클래스 생성을 구현하는 팩토리 클래스를 생성하는 것입니다.

하지만 JavaScript에는 인터페이스 같은 것이 없는 것 같아서 인터페이스 레이어를 제거합니다. 물론 구현 클래스 아래의 멤버 변수와 메서드는 동일해야 합니다. >예: 문자 메시지 보내기 및 이메일 보내기의 예는 다음과 같습니다.

1. 이메일 보내기 [구현] 수업

2. SMS 보내기 [구현] 수업
function MailSender() {    
this.to = '';    
this.title = '';    
this.content = '';
}
MailSender.prototype.send = function() {    
//send body
}
로그인 후 복사

3. 팩토리 클래스 만들기:
function SmsSender() {
    this.to = '';
    this.title = '';
    this.content = '';
}

SmsSender.prototype.send = function() {
    //send body
}
로그인 후 복사

4. 이 팩토리 클래스 사용:
function SendFactory() {
    this.sender = null;
}

SendFactory.prototype.produce = function(type) {
    var me = this;
    if (type == 'mail') {
        me.sender = new MailSender();
    } else if (type == 'sms') {
        me.sender = new SmsSender();
    }
   return me.sender;
}
로그인 후 복사

var factory = new SendFactory();
var sender = factory.produce('mail'); //sms
sender.to = 'toName#mail.com';
sender.title = '邮件测试标题!';
sender.content = '发送内容';
sender.send();
로그인 후 복사
2. 🎜>

설명: 다중 팩토리 모드 메소드는 전달된 문자를 기반으로 반환 구현이 이루어지기 때문에 일반 팩토리 메소드를 개선한 것입니다. 문자를 잘못 입력하면 처리되지 않거나, 에서 처리될 수 있습니다. 잘못된 방법을 사용하면 이러한 오류를 피할 수 있습니다. 위의 팩토리 클래스를 개선했습니다.

사용 방법:

function SendFactory() {
    this.sender = null;
}

SendFactory.prototype.produceMail = function() {
    var me = this;
    me.sender = new MailSender();
    return me.sender;
}
SendFactory.prototype.produceSms = function() {
    var me = this;
    me.sender = new SmsSender();
    return me.sender;
}
로그인 후 복사
3. 정적 팩토리 메소드 패턴

var factory = new SendFactory();
var sender = factory.produceSms(); //produceMail
sender.to = 'toName#xxxxx';
sender.title = '短信发送方法标题';
sender.content = '发送内容';
sender.send();
로그인 후 복사
설명: 위의 여러 팩토리 메소드 패턴의 메소드를 정적 식별자로 변경하면 SendFactory를 인스턴스화할 필요가 없습니다. 팩토리 클래스 코드는 다음과 같이 수정됩니다.

사용법:

팩토리 메소드 패턴 설명

var SendFactory = {
    produceMail : function() {
        return new MailSender();
    },
    produceSms : function() {
        return new SmsSender();
    }
}
로그인 후 복사

객체 지향 지침 프로그래밍, 초기화해야 할 제품(실제 모델, 이름: 클래스 이름, 멤버 속성, 작업 방법 등)이 많은 경우, 즉 제품을 생성하고 [동일한 인터페이스를 구현]해야 하는 경우, 첫 번째 패턴은 입력 유형이 잘못되었을 수 있습니다. 두 번째 모드에서는 필요할 때 팩토리 인스턴스가 생성됩니다.

var sender = SendFactory.produceMail();
sender.to = 'toName#mail.com';
sender.title = '邮件发送标题';
sender.content = '发送内容';
sender.send();
로그인 후 복사
위 내용은 이 장의 전체 내용입니다. 더 많은 관련 튜토리얼을 보려면

자바스크립트 비디오 튜토리얼을 방문하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿