抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

工厂模式: 又叫静态工厂方法,由一个工厂对象决定创建某一种产品对象类的实例。主要用来创建同一类对象

简单点就是方便创建类,把类打包到一个类里,用的时候直接叫包名就好了。

当代码中的类很多的时候,例如:

class Apple{
    constructor() {
        console.log("Apple被造出来了")
    }
}
class Oppo{
    constructor() {
        console.log("Oppo被造出来了")
    }
}
class Xiaomi{
    constructor() {
        console.log("Xiaomi被造出来了")
    }
}
class Vivo{
    constructor() {
        console.log("Vivo被造出来了")
    }
}
class Huawei{
    constructor() {
        console.log("Huawei被造出来了")
    }
}
class Lg{
    constructor() {
        console.log("Lg被造出来了")
    }
}

这时候想创建类还得看看他叫什么,是个什么东西,如果我们给他打个包:

class PhoneProducer{
    getPhone(type){
        switch (type.toLowerCase()){
            case "apple":
                return new Apple()
            case "oppo":
                return new Oppo()
            case "xiaomi":
                return new Xiaomi()
            ...
            default:
            	return ""
        }
    }
}
// 调用工厂返回苹果手机的实例
const iPhone_12_Pro_Max = new PhoneProducer().getPhone('apple') // output: Apple被造出来了

这样,每次实例化某个手机就不用再照着全部的翻了,只需要从Phone类里找就好了

这种方法的好处:结构清晰、代码简单

缺点:违背开闭原则:代码维护不方便,新增一个类的时候还得去改工厂类的代码,由于工厂类集中了所有实例的创建逻辑,违反了高内聚责任分配原则,将全部创建逻辑集中到了一个工厂类中;它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了

(好水啊,但确实没啥好写的。。。

评论