星空网 > 软件开发 > Java

1 设计模式

  工厂方法模式适用于“大量的产品需要频繁创建,并且具有同样的接口时使用”。

一、普通工厂模式   对于实现了同一个接口的一些类进行统一实例的创建,把这个统一创建的工作交给一个类来实现,这个类就叫做工厂类。

     Job接口 (定义了要做的事情)

1 设计模式1 设计模式
1 public interface Job {2   public void say();3 }

View Code

  ReadJob实现类,实现Job接口,实现Job接口定义的方法:

1 设计模式1 设计模式
1 public class ReadJob implements Job {2   @Override3   public void say() {4     System.out.println("This is read Job");5   }6 }

View Code

  WriteJob实现类,实现Job接口,实现Job接口定义的方法:

1 设计模式1 设计模式
1 public class WriteJob implements Job {2   @Override3   public void say() {4     System.out.println("This is write Job");5   }6 }

View Code

普通工厂通过共有方法传递参数的形式获取返回的实例,如

1 设计模式1 设计模式
 1 public class SimpleJobFactory { 2   public static final String READ="read"; 3   public static final String WRITE="write"; 4   public Job produce(String type) 5   { 6     if(READ.equalsIgnoreCase(type)) 7     { 8       return new ReadJob(); 9     }else if(WRITE.equalsIgnoreCase(type))10     {11       return new WriteJob();12     }else13     {14       System.out.println("Parameter type error,can not create object");15       return null;16     }17   }18 }

View Code

    测试用例:根据参数生成具有统一接口的两个对象实例

1 public class SimpleJobFactoryTest {2   public static void main(String[] args) {3     SimpleJobFactory factory=new SimpleJobFactory();4     Job job1=factory.produce(SimpleJobFactory.READ);5     job1.say();6     Job job2=factory.produce(SimpleJobFactory.WRITE);7     job2.say();8   }9 }

测试输出:

1 This is read Job2 This is write Job

二、多个工厂方法模式,是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象。

1 public class MethodsJobFactory {2   public Job produceReadJob(){3     return new ReadJob();4   }5   public Job produceWriteJob(){6     return new WriteJob();7   }8 }

测试代码:

1 public class MethodsJobFactoryTest {2   public static void main(String[] args) {3     MethodsJobFactory factory=new MethodsJobFactory();4     Job job1=factory.produceReadJob();5     Job job2=factory.produceWriteJob();6     job1.say();7     job2.say();8   }9 }

测试结果:

1 1 This is read Job2 2 This is write Job

三、静态工厂方法模式,将上面的多个工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可。

public class MethodsJobStaticFactory {  public static Job produceReadJob(){    return new ReadJob();  }  public static Job produceWriteJob(){    return new WriteJob();  }}

测试代码:

1 public class MethodsJobStaticFactoryTest {2   public static void main(String[] args) {3     Job job1=MethodsJobStaticFactory.produceReadJob();4     Job job2=MethodsJobStaticFactory.produceWriteJob();5     job1.say();6     job2.say();7   }8 }

测试结果:

1 This is read Job2 This is write Job

 

下一篇对抽象工厂模式进行学习。

 2016-07-27  22:02:40

 




原标题:1 设计模式

关键词:设计模式

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

2020选品思路:从谷歌趋势找出疫情中16种火爆产品:https://www.ikjzd.com/articles/123527
VAT政策变更,卖家费用可大大降低:https://www.ikjzd.com/articles/123528
疫情下美国电商销售额或涨18% 但补不回实体店损失:https://www.ikjzd.com/articles/123529
因串通市场运费,两家货代在美国被起诉并面临巨额罚款!:https://www.ikjzd.com/articles/12353
Chargeback claim是什么?遇到信用卡拒付怎么办?:https://www.ikjzd.com/articles/123530
销量飙升1540%,新晋爆款竟是它!:https://www.ikjzd.com/articles/123531
TikTok 将推出先买后付服务 :https://www.goluckyvip.com/news/188219.html
深圳有没有比较好玩的景点 深圳有没有比较好玩的景点推荐一下:https://www.vstour.cn/a/366175.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流