javascript 디자인 모델의 간단한 공장 모델

3227 단어
Simple Factory (Simple Factory) 는 정적 공장 방법이라고도 하는데, 하나의 공장 대상이 특정한 제품 대상 클래스를 만드는 실례를 결정하는데, 주로 같은 종류의 대상을 만드는 데 쓰인다.

1. 하나의 요구


다음은 우리가 간단한 수요에서 말하자면 사용자 로그인을 할 때 우리는 왕왕 사용자 이름 검사 등 기능을 할 수 있다. 다음은 일반적인 방법으로 간단하게 실현할 것이다.필요: 로그인은 사용자 이름이 16개의 숫자나 알파벳 이내로 제어되어야 하며, 검사에 실패한 팝업 창 알림입니다
var LoginTips = function(text) { 
     this.content = text;
}
LoginTips.prototype.show = function () {
      // 
}
var loginTipName = new LoginTips(' , 16 !')
loginTipName.show()

자, 큰일 났습니다. 앞으로도 이걸로 비밀번호 검사를 할 수 있습니다.
var loginTipPassword = new LoginTips(' ')

와, 쓰기 좋죠!

2. 두 번째 요구 사항


원래의 기초 위에서 등록하러 가는 버튼을 추가하면 된다. 그러면 우리는 클래스를 하나 더 써서 이 일을 할 것이다
var LoginRegister = function(text) { 
     this.content = text;
}
LoginRegister.prototype.show = function () {
      // 
}
var gotoRgister = new LoginTips(' , ?')
gotoRgister.show()

3. 세 번째 요구 사항은 로그인 성공 후 알림 상자를 표시하여 사용자가 성별을 입력하도록 합니다


........ 또 종류를 써야 돼...사용하기에는 관리가 너무 복잡하고 종류 이름이 달라서 매번 사용할 때마다 찾아봐요. 귀찮아요. 간단한 공장 방법으로 실현해 볼게요. 예를 들면 체육용품점, 모든 기재는 대응하는 속성을 사용하고 우리는 농구, 축구, 테니스를 예로 들겠습니다.
var Basketball = function () {
    this.info = ' '
}
Basketball.prototype = {
    getNumber:function () {console.log(' 5 ')},
    getBallsize:function() {console.log(' ')}  
}
var Football = function () {
    this.info = ' '
}
Football.prototype = {
    getNumber:function () {console.log(' 11 ')},
    getBallsize:function() {console.log(' ')}  
}
var Tennis = function () {
    this.info = ' !'
}
Tennis.prototype = {
    getNumber:function () {console.log(' 1 ')},
    getBallsize:function() {console.log(' , ')}  
}
// 
var SportFactory = function(name){
    switch(name){
        case 'NBA': return new Basketball();
        case 'wordCup': return new Bootball();
        case 'frenchOpen': return new Tennis()
    }
}
 
var basketball = SportFactory('NBA')
basketball.getNumber()

다음은 우리가 처음에 두 종류를 간단한 공장의 방식을 통해 개조하면 훨씬 쓰기 쉽다
var PopFactory = function(name){
    switch(name){
        case 'checkTip': return new loginTips();
        case 'registerTip': return new loginRegister()
    }
}

이 정도면 괜찮아요. 많이 썼어요.

하나의 대상이 많은 종류를 대체할 수 있다


예를 들어 책 한 권을 만들려면 이런 책들은 모두 비교적 비슷한 속성을 가지고 있다. 예를 들어 책 이름, 프로필, 출판 시간 등이 있다.이렇게 하면 우리는 대상을 통해 서로 다른 책을 만들 수 있다.
// 
function createBook(name,time,summary){
    // 
    var obj = new Object()
    obj.name = name
    obj.time = time
    obj.summay = summay
    obj.getName = function (){
        console.log(this.name)
    }
    return obj
}
// 
var js = createBook('js','2013',' javascript')
var css = createBook('css','2015',' css')
js.getName()
css.getName()
// ~

그럼 이제 두 가지 방식이 어떤 공통점과 차이점이 있는지 생각해 볼까요?첫 번째는 클래스 실례화 대상을 통해 만들어진 것이고, 두 번째는 새로운 대상을 만들어서 이 대상에 대한 속성과 방법의 확대를 통해 이루어진 것이다.첫 번째 방법은 이 클래스에 부류가 있다면 창설된 대상은 그 부류의 속성과 방법을 가지게 되고 두 번째는 새로운 개체가 된다.물론 어떤 방법을 선택하여 실현하느냐는 네 자신이 수요를 해결하는 사고방식에 달려 있다!
끝나다

좋은 웹페이지 즐겨찾기