当前位置:网站首页>建造者模式
建造者模式
2022-06-09 10:19:00 【Qwe7】
二、建造者模式
建造者模式注重创建对象的细节,使用这种模式创建出的复杂对象或者复合对象结构会非常清晰
1、建造者模式例子
比如有一家招聘中介公司,现在有一批纸质简历或者简历数据信息,为了做成统一的电子版简历,我们需要将这些信息进行整理,我们如何去做呢
// 未使用建造者模式前
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var data = [
{
name: 'zhang san',
age: 24,
work: 'engineer'
},
{
name: 'li si',
age: 25,
work: 'teacher'
},
{
name: 'wang wu',
age: 26,
work: 'sb'
},
]
function Candidate(param) {
var _candidate = {};
_candidate.name = param.name
_candidate.age = param.age;
_candidate.firstName = _candidate.name.split(' ')[0];
_candidate.secondName = _candidate.name.split(' ')[1];
_candidate.work = {};
switch(param.work) {
case 'engineer':
_candidate.work.name = '工程师'
_candidate.work.description = '热爱编程'
break;
case 'teacher':
_candidate.work.name = '老师'
_candidate.work.description = '热爱分享'
break;
default:
_candidate.work.name = param.work
_candidate.work.description = '无'
break
}
_candidate.work.changeWork = function(work) {
this.name = work
}
_candidate.work.changeDes = function(des) {
this.description = des;
}
return _candidate
}
var candidateArr = []
for (let i = 0; i < data.length; i++) {
candidateArr[i] = Candidate(data[i])
}
console.log(candidateArr[0])
candidateArr[1].work.changeWork('xxx')
console.log(candidateArr[1].work)
</script>
</head>
<body>
</body>
</html>// 建造者模式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var data = [
{
name: 'zhang san',
age: 24,
work: 'engineer'
},
{
name: 'li si',
age: 25,
work: 'teacher'
},
{
name: 'wang wu',
age: 26,
work: 'sb'
},
]
function Candidate(param) {
var _candidate = new Person(param);
_candidate.name = new CreateName(param.name)
_candidate.work = new CreateWork(param.work)
return _candidate
}
function Person(param) {
this.name = param.name
this.age = param.age
}
function CreateName(name) {
this.wholeName = name
this.firstName = name.split(' ')[0]
this.secondName = name.split(' ')[1]
}
function CreateWork(work) {
switch(work) {
case 'engineer':
this.name = '工程师'
this.description = '热爱编程'
break;
case 'teacher':
this.name = '老师'
this.description = '热爱分享'
break;
default:
this.name = work
this.description = '无'
break
}
}
CreateWork.prototype.changeWork = function(work) {
this.name = work
}
CreateWork.prototype.changeDes = function(des) {
this.description = des
}
var candidateArr = []
for (let i = 0; i < data.length; i++) {
candidateArr[i] = Candidate(data[i])
}
console.log(candidateArr[0])
candidateArr[1].work.changeWork('xxx')
console.log(candidateArr[1].work)
</script>
</head>
<body>
</body>
</html>边栏推荐
- IDEA插件推荐:文件树增强,显示类注释
- 这6种开源协议(GPL,LGPL,BSD,MIT,Apache)
- Tensorflow new document publishing: add CLP, dtensor The most advanced model is ready!
- Micronet: image recognition with very low flop
- 从SQL注入绕过最新安全狗WAF中学习fuzz
- 中金财富开户安全吗
- CTF WEB WP杂谈
- 叁拾贰- NodeJS简单代理池(有完没完?) 之 SuperAgent 使用代理不是 Timeout 的 Timeout
- WPF implements ring chart with details
- Thirty four - sklearn classifies text emotions according to samples
猜你喜欢

What kind of digital collection platform is a good platform?

Mof-53nps loaded antibacterial molecule vancomycin (MOF metal organic framework loaded protein polypeptide drugs)

肆拾贰- JS 告诉你,到底你是贫穷还是富贵

【图像增强】基于稀疏表示和正则化实现图像增强附matlab代码

三拾壹- NodeJS簡單代理池(合) 之 MongoDB 鏈接數爆炸了
[email protected]负载药物环丙沙星"/>[email protected]负载药物环丙沙星

Lua调用原理展示(Lua堆栈)

C# 图片验证码简单例子

肆拾伍- 正则表达式 (?=pattern) 以及 (?!pattern)

How to realize face verification quickly and accurately?
随机推荐
WebAssembly 2022调查来啦
【 tgcalls】 suivi et débogage des gestionnaires d'appels 2
Two Sum
Le nombre de liens mongodb pour le pool d'agents simples de nodejs a explosé
【mysql进阶】利用执行计划explain优化sql(二)
Application of ebpf in cloud native environment
你知道多少,深度解析,值得收藏
Redis的使用
关于在线帮助中心你需要思考以下几个问题
这6种开源协议(GPL,LGPL,BSD,MIT,Apache)
4.【素短语,最左素短语】
数学公式显示
[model deployment and business implementation] model transformation of AI framework deployment scheme
Detailed steps for using Excel conditional format
leetcode. 36 --- effective Sudoku
叶酸配体的金属有机骨架材料MOFs负载5-氟尿嘧啶,西达本胺,紫杉醇,阿霉素,柔红霉素等药物
【图像增强】基于稀疏表示和正则化实现图像增强附matlab代码
LaravelAdmin中model排序字段之间比较
Cyclodextrin metal organic framework loaded low molecular weight heparin and adriamycin (MOF metal organic framework loaded biological macromolecular drugs)
叁拾柒- JS 在 Canvas 上尝试分形图形 (一) 画了一个普通箱子图