• 抽象工厂模式


    当我们需要重复的创建对象的时候,通常会使用工厂模式来创建对象,这样来减轻工作量。但工厂模式的局限性在于只能够针对相同类型的产品。比如某工厂有一条生产果冻的生产线,这条生产线可以生产不同口味的果冻,这样可以很方便使用工厂模式来生成不同口味的果冻。但是如果新加入了一条生成汽水的生产线,那么整个系统就需要重新添加响应的汽水的类。这个时候就不能够很好的体现重用性了。如果我们将果冻和汽水的生产线都抽象出一个共同的父类,那么我们就可以通过使用里氏替换原则使用同样的方式来生成不同类型的产品了。如,工人加工->包装。替换了原来和具体的对象耦合的那部分内容,提高了系统的扩展性和可维护性。

    接下来我们通过一个实例来说明

    image

    代码如下:

    public class test
    {
        public static void main(String args[])
        {
            {
                factory f=new fruitA();
                f.show();
                f=new drinkA();
                f.show();
            }
        }
    }
    class factory
    {
        void show()
        {
            System.out.println("factory");
        }
    }
    class fruit extends factory
    {
        void show()
        {
            System.out.println("fruit");
        }
    }
    class drink extends factory
    {
        void show()
        {
            System.out.println("drink");
        }
    }
    class fruitA extends fruit
    {
        void show()
        {
            System.out.println("fruitA");
        }
    }
    class fruitB extends fruit
    {
        void show()
        {
            System.out.println("fruitB");
        }
    }
    class drinkA extends drink
    {
        void show()
        {
            System.out.println("drinkA");
        }
    }
    class drinkB extends drink
    {
        void show()
        {
            System.out.println("drinkB");
        }
    }

    结果如下

    image

  • 相关阅读:
    构造 BestCoder Round #52 (div.2) 1001 Victor and Machine
    multiset || 线段树 HDOJ 4302 Holedox Eating
    BFS(最短路) HDOJ 4308 Saving Princess claire_
    组合数专题
    余数专题
    数论 HDOJ 5407 CRB and Candies
    异或+构造 HDOJ 5416 CRB and Tree
    构造 HDOJ 5414 CRB and String
    背包DP HDOJ 5410 CRB and His Birthday
    博客贴自定义高亮代码
  • 原文地址:https://www.cnblogs.com/ives/p/Abstract_Factory.html
Copyright © 2020-2023  润新知