#父类或者接口作为返回值
也叫静态工厂模式
只需要知道要创建哪种类型的产品(例如用int/String/enum类型数据指定),不需要关注创建对象的具体过程,降低模块间的耦合
屏蔽底层产品类,以及具体实现,只需要知道哪个工厂可以创造这个产品(不需要知道iphone车间怎么制造,只需要知道有个厂,比如富士康,可以制造就可以了)
package com.factory; public interface Ipay { void pay(); }
package com.factory; //简单工厂模式 public class PayFactory { /** * 根据选择的不同支付方式,生成对应的支付对象 */ //创建支付对象 //Ipay:接口变量 public static Ipay createPayInstance(int type){ Ipay ipay = null; if (type == PayTypeConstance.PAY_AlI){ ipay = new AliPay(); }else if (type==PayTypeConstance.PAY_WX){ ipay = new WxPay(); } return ipay; } }
package com.factory; public class AliPay implements Ipay { @Override public void pay() { System.out.println("生成支付宝支付"); } }
package com.factory; public class WxPay implements Ipay { @Override public void pay() { System.out.println("生成微信支付"); } }
package com.factory; //常量类 public class PayTypeConstance { //常量 public static final int PAY_AlI=1; public static final int PAY_WX=2; public static final int PAY_PAL=3; }
package com.factory; //App 测试类 public class App { public static void main(String[] args) { AliPay aliPay=new AliPay(); aliPay.pay(); WxPay wxPay=new WxPay(); wxPay.pay(); Ipay payinstance=PayFactory.createPayInstance(PayTypeConstance.PAY_AlI); payinstance.pay(); Ipay payinstance2=PayFactory.createPayInstance(PayTypeConstance.PAY_WX); payinstance2.pay(); } }