简单工厂模式

客户端无需知道类名,只需了解参对应数。

通过引入配置文件,无需修改客户端即可添加产品。

工厂类集合了所有的逻辑,一旦不能正常工作,整个系统都受影响。

系统扩展困难,一旦添加新产品久不得不修改工厂逻辑。

违背了严格意义的开闭原则 添加一种产品需要更改工厂。

抽象产品:

1 public interface Freshwaterfish {
2 void grow();//鱼在生长
3 void harvest();//收获鱼
4 }

具体产品类:

 1 public class Carp implements Freshwaterfish {
 2 
 3     @Override
 4     public void grow() {
 5 System.out.println("鲤鱼在生长!");
 6     }
 7 
 8     @Override
 9     public void harvest() {
10     System.out.println("收获鲤鱼!");
11     }
12 
13 }

 

 1 public class Grasscrap implements Freshwaterfish {
 2 
 3     @Override
 4     public void grow() {
 5      System.out.println("草鱼在生长!");
 6     }
 7 
 8     @Override
 9     public void harvest() {
10     System.out.println("收获草鱼!");    
11     }
12 
13 }

简单工厂类:

 1 public class Fishfarm {
 2 public static Freshwaterfish producefish(String type) {
 3     switch (type) {
 4     case "草鱼": return new Grasscrap();
 5     case "鲤鱼": return new Carp();
 6         
 7     default: System.out.println("本场不生产这种鱼");
 8               return null;
 9     }
10 }
11 }

客户测试类:

 1 public class SimpleFactory {
 2 
 3     public static void main(String[] args) {
 4 Freshwaterfish mycarp = Fishfarm.producefish("鲤鱼");
 5 if (mycarp!=null) {
 6     mycarp.grow();
 7     mycarp.harvest();
 8 }
 9 Freshwaterfish mygrasscarp = Fishfarm.producefish("草鱼");
10 if (mygrasscarp!=null) {
11     mygrasscarp.grow();
12     mygrasscarp.harvest();
13 }
14     }
15 
16 }

 

posted @ 2017-08-01 11:02  千彧  阅读(217)  评论(0编辑  收藏  举报