为什么要使用工厂模式

工厂模式是一种创建型模式,是为了对外隐藏内部类。本篇文章不讲概念,只用下面一张图来回顾一下工厂模式

image

这里要提醒一点,工厂模式对外只暴露工厂类和抽象类(也可以是接口)。

使用工厂模式的目的是既隐藏了内部类的创建过程,又隐藏了具体功能的实现过程。

概念还是比较晦涩难懂的,下面举个例子说明:

你去小米店买手机,这时候你只知道我要买一台1亿像素的手机 ,这时候店员给你推荐了小米11,然后你买了手机去打电话发短信了。

注意,你在店员推荐之前是不知道具体的手机型号的,而是只知道你需要一台1亿像素的手机。

下面用伪代码表示一下:

class XiaoMiStore {
   static func getPhone(xiangsu) -> XiaomiPhone {
       if (xiangsu == 1亿) {
           return 小米11;
       else if (….)  {
           ….
       }
       ….
    }
}

Interface XiaomiPhone {
     func call()
     func message()
     ….
}

Class  Xiaomi11: XiaomiPhone {
    …
}

使用:

XiaoMiPhone phone1 = XIaomiStore.getPhone(1亿)
phone1.call()

如果只使用抽象类,不用工厂模式,就会把具体类暴露出来,使用:

XiaoMiPhone phone1 = new Xiaomi11
phone1.call()

抽象类和工厂模式都不用:

Xiaomi11 phone1 = new Xiaomi11
phone1.call()

使用抽象类就相当于你去小米店之前知道你是要买手机还是要买吹风机
而使用工厂模式是为了让你省去了解每个机型特点的时间。
工厂模式就是让用户能够根据已知的表象特征得到所需的产品。

欢迎关注微信公众号查看更多高质量文章:爱编程的大头

你可能感兴趣的:(为什么要使用工厂模式)