创建一个通用的接口,这个接口是工厂要生产的产品类,
public interface Message { public void send(); }
然后创建两个这个接口的实现类,代表具体的产品
public class IphoneMessage implements Message{ public void send() { System.out.println("Iphone message!"); } }
public class SamsungMessage implements Message{ public void send() { System.out.println("Samsung message!"); } }
然后 创建工厂类,根据传入的类型生产不同的产品,
public class MessageFactory { public Message produce(String type){ if(type.equals("Iphone")){ return new IphoneMessage(); }else if(type.equals("Samsung")){ return new SamsungMessage(); }else{ System.out.println("please chenk your input"); return null; } } }
最好创建测试类,利用工厂类传入类型生产不同的产品:
public class TestFactory { public static void main(String[] args) { MessageFactory messageFactory = new MessageFactory(); Message message1 = messageFactory.produce("Iphone"); Message message2 = messageFactory.produce("Samsung"); message1.send(); message2.send(); } }
运行,得到结果:
Iphone message! Samsung message! Process finished with exit code 0
如果考虑到传入的字符串可能会出错导致产生不了正确的产品,也可以把产品生成方法改成produce各种产品的方法就可以避免这个问题。