JS 디자인 모드 - 3. 패키지 와 정보 숨 기기

7608 단어 디자인 모드
패키지, 정보 숨 김 과 인터페이스의 관계
정보 감 추 는 것 은 목적 이 고 포장 은 수단 이다.
인 터 페 이 스 는 공공 방문 이 가능 한 방법 을 기록 한 계약 을 제공 했다.그것 은 두 대상 간 에 가 질 수 있 는 관 계 를 정의 했다.인터페이스 가 변 하지 않 는 다 면 이 관계 의 쌍방 은 모두 바 꿀 수 있다.
이상 적 인 소프트웨어 시스템 은 모든 종류의 인 터 페 이 스 를 정의 해 야 한다.
대상 만 들 기 기본 모드
1. 문호 개방 형
var Publication = new Interface('Publication', ['getIsbn', 'setIsbn',...]); //  

var Book = function(isbn, title, author){

    this.setIsbn(isbn);

    this.setTitle(title);

    this.setAuthor(author);

};

Book.prototype = {

    checkIsbn: function(){...},

    getIsbn: function(){return this.isbn,}, //   

    setIsbn: function(isbn){this.isbn=isbn;}, //   

    ...

};

인터페이스 + 포 털 오픈 + 수치 기 / 값 부여 기 는 포 털 오픈 형 생 성 대상 이 얻 을 수 있 는 가장 좋 은 효과 입 니 다.
2. 명명 규범 은 개인 구성원 을 구별 합 니 다.
var Publication = new Interface('Publication', ['getIsbn', 'setIsbn',...]); //  

var Book = function(isbn, title, author){

    this.setIsbn(isbn);

    this.setTitle(title);

    this.setAuthor(author);

};

Book.prototype = {

    checkIsbn: function(){...},

    getIsbn: function(){return this._isbn,}, //   

    setIsbn: function(isbn){this._isbn=isbn;}, //   

    ...

};

맞 아, 변수의 이름 앞 에 를 추가 하 는 거 야.개인 변 수 를 구별 하 는 것 도 잘 알려 진 명명 규범 이다.
3. 가방 을 닫 고 개인 구성원 실현
var Book = function(newIsbn, newTitle, newAuthor){

    var isbn, title, author; //  

    function checkIsbn(isbn){} //  



    this.getIsbn = function(){ //   return isbn;

    };

    this.setIsbn = function(newIsbn){ //  

        if(!checkIsbn(ewIsbn)) throw new Error('Book: invalid ISBN.');

        isbn = newIsbn;

    }

};



Book.prototype = { 

    display: function(){ //  

        ...

    };

};

특권 방법 이란 공용 방법 에 개인 변 수 를 접근 할 수 있 는 방법 이 부족 하기 때문에 특권 방법 이 라 고 한다.
4. 정적 방법 과 속성 (익명 함 수 는 신의 한 획 임 을 주의 하 라)
앞에서 대상 을 만 들 때 대부분의 방법 과 속성 이 연 결 된 것 은 클래스 의 인 스 턴 스 이 고 정적 구성원 이 연 결 된 것 은 클래스 자체 입 니 다.모든 정적 구성원 은 하나 밖 에 없다.
var Book = (function(){

    var numOfBooks = 0; //private static attribute



    function checkIsbn(){...}; //private static method



    return function(newIsbn, newTitle, newAuthor){

        var isbn, title, author; //private attribute



        //privileged methods

        this.getIsbn = function(){

            return isbn;

        };

        this.setIsbn = function(){

            ...

        };



        numOfBooks ++;

        if(numOfBooks > 50){

            throw new Error('Book: Only 50 instances of Book can be created.');

        }



        this.setIsbn(newIsbn);

        ...

    };

})();



//Public static method

Book.convertToTitleCase = function(){

    ...

};



//Public, non-privileged methods

Book.prototype = {

    display: function(){

        ...

    }

};

가방 을 닫 고 numOfBooks 라 는 변 수 를 생각해 보면 어떻게 된 일 인지 알 수 있 습 니 다.
상수
JS 에서 우 리 는 값 을 가 져 오 는 장치 만 있 고 값 을 부여 하지 않 는 변 수 를 만들어 서 상수 에 따라 할 수 있 습 니 다.구체 적 으로 코드 는 안 드 리 겠 습 니 다.

좋은 웹페이지 즐겨찾기