23种设计模式之抽象工厂模式代码实例

普通工厂模式有一个问题,就是需要拓展程序时需要修改原来的代码,

违反了程序的对拓展开放,对修改关闭的原则,为了解决这个问题就有了抽象工厂模式。

需要增加新的功能的时候直接增加工厂类,这样就避免了修改原有的代码,实现了功能的拓展。

先有产品的抽象类,再有工厂的抽象类,再有二者的实现类,具体见代码。

产品的抽象类:

public interface Message {
    public void send();
}

工厂的抽象类:

public interface Factory {
    public Message produce();
}

产品的两个实现类:

public class SamsungMessage implements Message{
    public void send() {
        System.out.println("Samsung message!");
    }
}
public class IphoneMessage implements Message{
    public void send() {
        System.out.println("Iphone message!");
    }
}

工厂的两个实现类:

public class IphoneFactory implements Factory{
    public Message produce() {
        return new IphoneMessage();
    }
}
public class SamsungFactory implements Factory{
    public Message produce() {
        return new SamsungMessage();
    }
}

测试抽象工厂模式:

public class TestFactory {
    public static void main(String[] args) {
        Factory factory = new IphoneFactory();
        Factory factory1 = new SamsungFactory();
        Message iphone = factory.produce();
        Message samsung = factory1.produce();
        iphone.send();
        samsung.send();

    }
}

得到结果:

Iphone message!
Samsung message!

Process finished with exit code 0

 

posted @ 2017-11-16 15:23  M理论  阅读(515)  评论(0编辑  收藏  举报