美文网首页
抽象工厂模式

抽象工厂模式

作者: 习惯了千姿百态 | 来源:发表于2018-05-24 21:57 被阅读0次

    一、理解

    (这一部分主要参考http://www.cnblogs.com/java-my-life/archive/2012/03/28/2418836.html


    在不同的操作系统下,Button和Text的实现是不一样的,如果我们按照这种继承方式去实现一个操作系统的某个具体功能(如一个文本编辑器),当我们切换操作系统时,那么Button和Text的实现都要改变,修改起来很复杂,很容易出现Windows下的Button是Unix下实现的。
    我们可以按照Windows和Unix进行分类,可以得到:

    当我们选择Unix系统时,那么它下面的所有的组件都是Unix下的实现,这样当我们改变操作系统时,只需要改变的是操作系统的类型,其他的都不用改变。
    Windows和Unix就可以看成两个工厂,生产一系列该系统对应的组件。

    UnixFactory返回的是UnixButton对象(其他类推),那我们只要在客户端中实例化UnixFactory,调用其中的创建组件的方法。当我们现在需要创建WindowsButton,那么只要将该工厂改为WindowsFactory即可,其他代码不变(因为这里面的UnixFatory和WindowsFactory都是实现AbstractFactory接口,实现了接口中的方法,根据java的向上转型很容易得出上述结论)

    二、优点

    客户端不需要具体的实现,只要根据接口编程(只要知道此时我需要创建Unix下的Button,我只要去调用UnixFactory这个工厂即可,让它创建Button,当我需要创建Windows下的Button,只要把工厂改变即可)

    三、缺点

    如果此时操作系统多个组件叫下拉列表List,那么我们在Unix和Windows下都需要编写List的实现,即抽象工厂需要修改,然后底下所有的具体工厂都要修改

    相关文章

      网友评论

          本文标题:抽象工厂模式

          本文链接:https://www.haomeiwen.com/subject/ckkxjftx.html