工厂方法模式
以一个框架型的类或方法为基础,继承生成不同类型的类或方法,通过不同类型的类或方法直接生成我们需要的对象
Topology
简单工厂模式 - 按钮
Code
/**
* @description An abstract class for creating button
* @param btn {HTMLButtonElement Object}
*/
class BtnFactory {
const btn
constructor(props) {
if (new.target === Btn) {
throw new TypeError("Cannot construct Abstract instances directly")
}
this.props.btn = new HTMLButtonElement()
}
}
/**
* @description A factory class for creating
* a square button
*
* @param btn {HTMLButtonElement Object}
*/
class SquareBtnFactory extends BtnFactory {
constructor() {
super(props)
}
create() {
const { btn } = this.props
btn.classList.add('square')
return btn
}
}
/**
* @description A factory class for creating
* a circle button
*
* @param btn {HTMLButtonElement Object}
*/
class CircleBtnFactory extends BtnFactory {
constructor() {
super (props)
}
create() {
const { btn } = this.props
btn.classList.add('circle')
return btn
}
}
Summary
这个是我个人根据工厂方法模式设计的符合个人编码习惯的工厂方法模式, 原本的模式 会将产品生成类再从具体工厂中分离出来,但是每个工厂只是对应生产一种产品,所以个人认为没有必要
优点
面对同类不同型对象的生成场景,可以细分化对象不同型的生成工厂,当有新的需求,只需要创建新的工厂
缺点
当需要生成不同品牌,不同类别的产品时不适用
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 简单工厂模式
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论