director : 무엇을 빌딩하는지 정확히 못한채 객체를 빌드
builder : director 가 생성을 수행하기 위해 사용하는 인터페이스
concrete builder :director의 지시에 따라 product를 실제로 빌딩한다 보통 외부에서(client에 의해) 혹은 abstract factory에 의해 생성된다.
product : director의 지시하에 builder가 빌딩하는 객체
<!doctype html>
<html lang="en">
<head>
<title>builder pattern</title>
</head>
<body>
<script>
var director = function(product){ //무엇을 빌딩하는지 정확히 알지 못한채 빌딩
product.concrete_builder_action1() //director의 지시에 따라 product를 빌딩된다;
product.concrete_builder_action2()
product.concrete_builder_action3()
}
function Builder(){ //공통 인터페이스
var common_value1 = this.common_value1 = 1;
var common_value2 = this.common_value2 = 2;
var common_value3 = this.common_value3 = 3;
this.concrete_builder_interface1 = function(){ //구현 인터페이스
this.concrete_builder_action1 = function(){
console.log("interface1:"+common_value1);
}
this.concrete_builder_action2 = function(){
console.log("interface1:"+common_value2);
}
this.concrete_builder_action3 = function(){
console.log("interface1:"+common_value3);
}
};
this.concrete_builder_interface2 = function(){
this.concrete_builder_action1 = function(){
console.log("interface2:"+common_value1);
}
this.concrete_builder_action2 = function(){
console.log("interface2:"+common_value2);
}
this.concrete_builder_action3 = function(){
console.log("interface2:"+common_value3);
}
}
}
var build = (new Builder); //공통 인테페이스 생성
var concrete_build1 = new build.concrete_builder_interface1; //구현 인터페이스 생성
var concrete_build2 = new build.concrete_builder_interface2;
var product1 = function(){
director(concrete_build1);
};
var product2 = function(){
director(concrete_build2);
};
product1();
product2();
</script>
</body>
</html>
댓글 없음:
댓글 쓰기