工厂方法模式

来源:互联网 发布:淘宝退货售后卡填什么 编辑:程序博客网 时间:2024/06/06 22:53

自己整合的关于工厂方法模式的理解

1. 简单工厂模式

先上图:


这里,我创建了3个手机类,去实现了一个包含有打电话功能的手机接口,又写了一个Phone的工厂方法,它有一个静态的方法,可以根据不同的传入参数,实例化出不同类型的手机。

优点:工厂类是整个模式的关键所在。它包含必要的判断逻辑,能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。用户在使用时可以直接根据工厂类去创建所需的实例,而无需了解这些对象是如何创建以及如何组织的。有利于整个软件体系结构的优化。

缺点:由于工厂类集中了所有实例的创建逻辑,这就直接导致一旦这个工厂出了问题,所有的客户端都会受到牵连。而且更重要的是,简单工厂模式违背了“开放封闭原则”,就是违背了“系统对扩展开放,对修改封闭”的原则,因为当我新增加一个手机产品的时候必须修改手机工厂类,相应的工厂类就需要重新编译一遍。

2. 工厂方法模式


上图:



    这里是一个手机接口类,实现了4种类型的手机模型,同时还有一个工厂接口类,实现了各个手机模型的工厂方法,当如要使用的时候:

public class Client {    public static void main(String[] args) {        PhoneFactory phoneFactory = new IphoneFactory();        Phone phone = phoneFactory.createPhone();        phone.callPhone();        phoneFactory = new NOKIAFactory();        phone = phoneFactory.createPhone();        phone.callPhone();        phoneFactory = new SamsungFactory();        phone = phoneFactory.createPhone();        phone.callPhone();    }}
当需要增加一款手机产品,如(xiaomi),只需要添加一个继承Phone接口的XiaoMi类和一个继承PhoneFactory的XiaoMiFactory,然后在client里面就可以直接使用了,完全不用去修改Factory里面的代码。完全符合开放封闭原则。



1 0
原创粉丝点击