JavaScript设计模式 - 模板方法模式

模板方法模式

模板方法模式由俩部分组成,第一部分是抽象父类,第二部分是具体实现子类,通常在抽象父类中封装了子类的算法框架,包括实现一些公共方法以及封装子类中所有方法的执行顺序,子类通过继承这个抽象类,也继承了整个算法结构,并且可以选择重写父类方法,它是一种典型的通过封装变化提高系统扩展性的设计模式,运用了模板方法模式的程度中,子类方法种类和执行顺序都是不变的,但是子类的方法具体实现则是可变的,父类只是一个模板,子类可以添加不同的功能

let Container = function (param) {
	this.render = function (list) {
		console.log("渲染列表", list)
	}
	let getData =
		param.getData ||
		function () {
			throw new Error("必须传递getData方法")
		}
	let func = new Function()
	func.prototype.init = async function () {
		let list = await getData()
		render(list)
	}
	return func
}

let Nowplaying = Container({
	getData: () => [1, 2, 3],
})
let nowplaying = new Nowplaying()
nowplaying.init()

let Commimgsoon = Container({
	getData: () => [4, 5, 6],
})
let commingsoon = new Commimgsoon()

commingsoon.init()

// 渲染列表 [ 1, 2, 3 ]
// 渲染列表 [ 4, 5, 6 ]

你可能感兴趣的:(JavaScript,设计模式,JS,javascript,设计模式,模板方法模式,前端,es6)