该模式主要解决在有多种算法相似的情况下,使用if…else所带来的难以维护性。它的优点是算法可以自由切换,同时可以避免过多的if…else判断,具有良好的扩展性。
例如:
<!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>
<style>
.greenItem {
background: green;
}
.redItem {
background: red;
}
.yellowItem {
background: yellow;
}
</style>
</head>
<body>
<ul id="list_content"></ul>
<script>
let list = [
{
title: '见义勇为',
type: 1
}, {
title: '正能量',
type: 2
}, {
title: '黄色',
type: 3
}, {
title: '为民除害',
type: 1
},
]
let obj = {
1: {
content: '审核通过',
className: 'greenItem'
},
2: {
content: '审核ing',
className: 'yellowItem'
},
3: {
content: '审核未通过',
className: 'redItem'
}
}
let listContent = document.querySelector('#list_content')
listContent.innerHTML = list.map(item => {
return `<li class="${obj[item.type].className}">
${item.title}
${obj[item.type].content}
</li>`
})
</script>
</body>
</html>
如果不用obj来整合,那么在innerHTML的函数中就会有很多if…else来进行判断class的名字以及内容