개요

모듈화 설계를 제대로하는 핵심은 캡슐화

캡슐화는 모듈들이 시스템의 다른 부분에 대해 알아야 내용을 줄여 준다.

코드 변경이 쉬워진다.

 

서버 객체의 필드가 가리키는 객체(위임) 메서드를 호출하려면 클라이언트는 위임 객체를 알아야 한다.

위임 객체 인터페이스 변경 인터페이스를 사용하는 모든 클라이언트 코드를 수정해야 한다.

이런 의존성을 없애기 위해 서버 클래스에서 자체 위임 메서드를 만들어 위임 객체의 존재를 숨기면 된다.

 

 

예시

class Person{
    constructor(name){
        this._name = name;
    }
    get name(){return this._name;}
    get department(){return this._department;}
    set department(arg){this._department = arg;}
}
class Department{
    get chargeCode(){return this._chargeCode;}
    set chargeCode(arg){this._chargeCode=arg;}
    get manager(){return this._manager;}
    set manager(arg){this._manager=arg;}
}
//클라이언트
let manager = aPerson.department.manager;


class Person{
    constructor(name){
        this._name = name;
    }
    get name(){return this._name;}
    get department(){return this._department;}
    set department(arg){this._department = arg;}
    get manager(){return this.department.manager;}
}
class Department{
    get chargeCode(){return this._chargeCode;}
    set chargeCode(arg){this._chargeCode=arg;}
    get manager(){return this._manager;}
    set manager(arg){this._manager=arg;}
}
//클라이언트
let manager = aPerson.manager;


class Person{
    constructor(name){
        this._name = name;
    }
//접근자 삭제
    get name(){return this._name;}
    get manager(){return this.department.manager;}
}
class Department{
    get chargeCode(){return this._chargeCode;}
    set chargeCode(arg){this._chargeCode=arg;}
    get manager(){return this._manager;}
    set manager(arg){this._manager=arg;}
}
//클라이언트
let manager = aPerson.manager;

 

 

 

+ Recent posts