二、工厂模式
解决问题:
-
主要解决接口选择的问题
优点:
-
扩展性高,增加产品只需要扩展工厂类
-
屏蔽具体实现,面向接口
缺点:
-
不符合开闭原则,增加产品需要修改工厂类
实现
// 产品通用接口 public interface Operation { void shoot(); }
// 产品工厂 根据参数不同 返回对应的产品 public class GunFactory { public Operation getOpration(String type) { if ("M4".equals(type)) { return new M4Gun(); } else if ("AUG".equals(type)) { return new AugGun(); } return null; } }
// 具体产品 实现通用接口 public class M4Gun implements Operation { @Override public void shoot() { System.out.println("M4 shoot you"); } }
UML类图