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