JavaScript デザイン パターン クラシック ビルダー pattern_javascript スキル

WBOY
リリース: 2016-05-16 15:13:52
オリジナル
1040 人が閲覧しました

1. ビルダーモード モードの概念

ビルダー パターンは、複雑なオブジェクトの構築をその表現から分離できるため、同じ構築プロセスで異なる表現を作成できます。つまり、ビルダー モードを使用する場合、ユーザーはそれらを取得するために構築するタイプを指定する必要があり、特定の構築プロセスや詳細を知る必要はありません。ビルダー パターンは、実際にはコマンダー、ビルダー、およびコマンダーを使用して特定のビルダーを呼び出して作業し結果を得るクライアントで構成されます。

ビルダー パターンは主に「複雑なオブジェクトを段階的に構築する」ために使用されます。「段階的に」は安定したアルゴリズムですが、複雑なオブジェクトのさまざまな部分は頻繁に変更されます。

平たく言えば、白富美は別荘を建てる必要があり、請負業者に直接行き、請負業者が別荘を建てるための労働者を探します。その中で、白富美さんは直接労働者を一人一人探しに行く必要がありません。さらに、請負業者は白富美さんのニーズを理解しており、労働者をどこで見つければよいかを知っているため、労働者は作業を行うことができます。これにより、白富美さんと労働者の間のコミュニケーションコストが節約され、バイ・フメイさんは家の建て方を知る必要がなくなり、最終的に家を建てることができるようになります。家を手に入れてください。

ビルダーモードの構造図

2. ビルダーモードの機能と注意事項

モード機能:

1. 複雑なオブジェクトを段階的に作成します

2. カプセル化プロセスとコンポーネントの特定の作成を分離します

3. コンポーネントの組み立て方法を心配する必要はありません

注:

1. 安定したアルゴリズムによってサポートされている必要があります

2. 加工技術の公開 - Bai Fumei は家の作り方を気にする必要はありませんが、家がどのように建てられるかをいつでも見ることができます

3. ビルダーモードのコードと実践的な概要

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
//1.产出东西是房子
//2.包工头调用工人进行开工 而且他要很清楚工人们具体的某一个大项
//3.工人是盖房子的 工人可以建卧室 建客厅 建厨房
//4.包工头只是一个接口而已 他不干活 他只对外说我能建房子
function Fangzi(){//Fangzi可以理解为单例模式
if(!(this instanceof Fangzi)){
return new Fangzi();
}
this.woshi = "";
this.keting = "";
this.chufang = "";
}
function Baogongtou(){
if(!(this instanceof Baogongtou)){
return new Baogongtou();
}
this.jianfangzi = function(gongren){
gongren.jian_chufang();
gongren.jian_keting();
gongren.jian_woshi();
}
}
function Gongren(){
if(!(this instanceof Gongren)){
return new Gongren();
}
this.jian_woshi = function(){
console.log("建卧室");
}
this.jian_keting = function(){
console.log("建客厅");
}
this.jian_chufang = function(){
console.log("建厨房");
}
this.jiaofang = function(){
var _fangzi = new Fangzi();
_fangzi.woshi = "ok";
_fangzi.keting = "ok";
_fangzi.chufang = "ok";
return _fangzi;
}
}
var gongren = new Gongren();
var baogongtou = new Baogongtou();
baogongtou.jianfangzi(gongren);
var myfangzi = gongren.jiaofang();
console.log(myfangzi);
</script>
</body>
</html>
ログイン後にコピー

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート