美文网首页
抽象工厂(Abstrasct Factory)

抽象工厂(Abstrasct Factory)

作者: 森码 | 来源:发表于2018-07-26 21:36 被阅读9次
  1. 定义
    提供接口,创建一系列相关或独立的对象,而不指定这些对象的具体类。(可以理解为工厂模式的抽象)

  2. 类图


    Abstract Factory.png
  3. 例子

    //Button
    class Button {/* ...*/}
    class WinButton extends Button {/* ...*/}
    class MacButton extends Button{/* ...*/}

    //Icon
    class Icon {/* ...*/}
    class WinIcon extends Icon{/* ...*/}
    class MacIcon extends Icon{/* ...*/}


    //抽象工厂
    abstract class OSFactory{
        abstract Button createButton();
        abstract Icon createIcon();
    }

    //实现工厂Win
    class WinFactory extends OSFactory{

        @Override
        Button createButton() {
            return new WinButton();
        }

        @Override
        Icon createIcon() {
            return new WinIcon();
        }
    }

    //实现工厂Mac
    class MacFactory extends OSFactory{

        @Override
        Button createButton() {
            return new MacButton();
        }

        @Override
        Icon createIcon() {
            return new MacIcon();
        }
    }

补充

  • 当创建的种类(或者行为)超过一种时,原先的工厂方法就显得力不从心,或许还有些杂乱,这时候就应该抽象创造者的抽象了,这往往是面向对象的思维,如果一个类太长太乱,我们就可以尝试去抽象了(但是这并不绝对,解决的方案不止一种),通过多个类的实现来分离一个类中的代码,让程序变的更易维护。

发现一个总结的更全的网站

相关文章

网友评论

      本文标题:抽象工厂(Abstrasct Factory)

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