倚楼听风雨
淡看江湖路

浅析设计模式第一章之简单工厂模式

其实简单工厂模式严格意义上来讲不属于常说的 GoF 23 种设计模式之一,不过可能用的比较多,又经常被拿来跟「工厂方法模式」、「抽象工厂模式」拿来对比,所以属于基础要求,必须掌握的。他们都属于类创建型设计模式,从模式命名模式上来简略分析,其实就是设计了一个工厂,里面管理者各种具体的类的构造初始化,然后客户端直接想要调用哪个类直接告诉工厂即可。

定义:
定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法(Static Factory Method)模式。

老四对于简单工厂模式的理解总结起来就是一句话,接口的行为抽象。举个例子并用代码展示一下。比如我们现在定义一个鸟类,鸟类都会飞行,那我们就可以将飞行的方法抽象出来,然后信鸽、老鹰、知更鸟可以实现鸟类的行为,最后通过工厂类进行具体鸟类的初始化供客户端调用即可。

代码示例

首先声明一个抽象类或者接口,抽象公共行为

三个实现类,实现抽象封装

创建工厂类,声明静态方法,负责具体实现类的实例化操作。最后进行客户端调用。

运行结果

浅析设计模式第一章之简单工厂模式的图片-高老四博客

通过简单工厂模式的代码示例,我们可以清晰的看到,客户端的调用与具体的实现类相分隔,关于具体的鸟类实现都统一封装在工厂类中,由其负责各种业务的操作,客户端无需关心,只需要负责传入自己想要获得鸟类对象对应的类型参数即可,这样就比较遵循「单一职责」的规约。同时,再具体的业务中,客户端传入的「birdType」可以通过配置文件等实现动态传参从而满足「开放-封闭」原则。

不过,我们从工厂类中依然可以看到,静态方法依然承接了各种各样的情景判断,这也是他的缺点,所谓的职责过重,而且如果具体的实现类比较多,判断条件也会增多,同时增加一个具体实现类也要修改这个静态方法,这些也都是简单工厂模式的局限性。

所以简单工厂模式适用于工厂类负责创建的对象数目较少,业务逻辑相对简单的业务场景。

相关阅读

更博不易,如果觉得文章对你有帮助并且有能力的老铁烦请捐赠盒烟钱,点我去赞助。或者扫描文章下面的微信/支付宝二维码打赏任意金额(点击「给你买杜蕾斯」),也可扫描小站放的支付宝领红包二维码,线下支付享受优惠的同时老四也可以获得对应赏金,老四这里抱拳谢谢诸位了。捐赠时请备注姓名或者昵称,因为您的署名会出现在赞赏列表页面,您的捐赠钱财也会被用于小站的服务器运维上面,再次抱拳感谢。

赞(18) 给你买杜蕾斯
本站原创文章受自媒体平台原创保护,未经允许不得转载高老四博客 » 浅析设计模式第一章之简单工厂模式

开始你的表演 抢沙发

觉得文章有用就打赏一下老四,鼓励我更好的创作

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册