美文网首页
设计模式之---抽象工厂模式

设计模式之---抽象工厂模式

作者: zz桃子桃 | 来源:发表于2016-08-18 17:22 被阅读0次

抽象工厂模式

  1. 工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。

  2. 下面用一个例子来说明抽象工厂模式

    • Cat和Dog都是Animals,Animal都有吃东西的能力,于是有:

    Animals接口

        public interface Animals {  
            public void eats();  
        }
__Cat类实现Animals接口__
        public class Cat implements Animals {
            @Override
            public void eats() {
                System.out.println("cat need to eat food");
            }
        }
__Dog类实现Animals接口__
        public class Dog implements Animals{
            @Override
            public void eats() {
                // TODO Auto-generated method stub
                System.out.println("dog need to eat food");
            }
        }
__工厂Provider接口__
        public interface Provider {
            public Animals produce();
        }
__两个工厂类__
        public class CatFactory implements Provider{
        
            @Override
            public Animals produce() {
                return new Cat();
            }
        }```
    __工厂类__
    public class DogFactoru implements Provider{
    
        @Override
        public Animals produce() {
            return new Dog();
        }
    
    }
    __最后测试__
    ```
        public class Test {
            public static void main(String[] args) {
                Provider provider = new CatFactory();
                Animals eat = provider.produce();
                eat.eats();
                
                Provider provider2 = new DogFactoru();
                Animals eat2 =provider2.produce();
                eat2.eats();
            }
        }
__运行结果__:

    >cat need to eat food
    >dog need to eat food
  • 其实这个模式的好处就是,如果你现在想增加一个功能:发及时信息,则只需做一个实现类,实现Sender接口,同时做一个工厂类,实现Provider接口,就OK了,无需去改动现成的代码。这样做,拓展性较好!

相关文章

网友评论

      本文标题:设计模式之---抽象工厂模式

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