抽象工厂模式与工厂方法模式有哪些不同之处,Java抽象工厂

  抽象工厂模式与工厂方法模式有哪些不同之处,Java抽象工厂

  这篇文章带给你一些关于java的知识,主要是关于抽象工厂。根据实例学习什么是抽象工厂。下面就来看看吧,希望对你有帮助。

  如何解决写爬虫IP受阻的问题?立即使用。

  

什么是抽象工厂模式

  抽象工厂(AbstractFactory)模式的定义:是一个模式结构,它为访问类提供了一个接口,用于创建一组相关或相互依赖的对象,访问类可以获得同一系列的不同级别的产品,而无需指定所需产品的特定类。

  

满足条件:

  系统中有多个产品系列,每个特定工厂都创建相同系列但属于不同层次结构的产品。系统一次只能消耗一个家族的产品,也就是说,同一个家族的产品可以一起使用。

优点:

  可以在类内共同管理产品族中的多级产品,而不是引入几个新的类来管理。

  当需要一个产品族时,抽象工厂可以保证客户端始终只使用同一产品的产品组。

  抽象工厂增强了程序的可扩展性。当添加新的产品系列时,不需要修改原始代码来满足开放封闭原则。

  

缺点:

  当需要向产品系列中添加新产品时,需要修改所有工厂类。增加了系统的抽象性和理解难度。

抽象工厂的实现

  案例的主要角色如下:抽象工厂(Abstract Factory):七侠传承工厂(SimpleFactory):师傅、师娘抽象产品(Product):天外陨石(铸剑原料)、一窝鸽子蛋(未孵化鸽子)具体产品(ConcreteProduct):七剑。七只精神鸽

  案例:

  师父有七侠传承,能造至尊孙之剑,能培养雄鸽。

  师娘有七侠之传承,能打造阴魂之剑,培养母鸽。

  七侠要求他们的主人和老师自己造剑,收养自己的小鸽子。

  

抽象产品、产品

  S1接口(天外陨石):

  公共接口S1 {

  void show();}S2接口(一窝灵鸽蛋):

  公共接口S2 {

  void show();}A1类实现接口S1(长虹剑):

  公共类A1实现S1 {

  @覆盖

  公共void show() {

  System.out.println(造了一把长虹剑);

  }}B1类实现接口S1(冰魄剑):

  公共类B1实现S1 {

  @覆盖

  公共void show() {

  System.out.println(造了一把冰冷的剑);

  }}C1类实现接口S1(紫云剑):

  公共课C1实现S1 {

  @覆盖

  公共void show() {

  System.out.println(造了一把紫云剑);

  }}D1类实现接口S1(雨花剑):

  公共课D1实现S1 {

  @覆盖

  公共void show() {

  System.out.println(造了一把紫云剑);

  }}E1类实现接口S1(青光剑):

  公共课E1实现S1 {

  @覆盖

  公共void show() {

  System.out.println(造了一把紫云剑);

  }}F1类实现接口S1(奔雷剑):

  公共类F1实现S1 {

  @覆盖

  公共void show() {

  System.out.println(造了一把紫云剑);

  }}G1类实现接口S1(旋风剑):

  公共课G1实现S1 {

  @覆盖

  公共void show() {

  System.out.println(造了一把紫云剑);

  }}A2类实现接口S2(灵鸽一号):

  公共类A2实现S2 {

  @覆盖

  公共void show() {

  System.out.println(凌哥7号);

  }}B2类实现接口S2(灵鸽二号):

  公共课B2实现S2 {

  @覆盖

  公共void show() {

  System.out.println(凌哥7号);

  }}C2类实现接口S2(灵鸽三号):

  公共课C2实现S2 {

  @覆盖

  公共void show() {

  System.out.println(凌哥7号);

  }}D2类实现接口S2(灵鸽四号):

  公共课D2实现S2 {

  @覆盖

  公共void show() {

  System.out.println(凌哥7号);

  }}E2类实现接口S2(灵鸽五号):

  公共类E2实现S2 {

  @覆盖

  公共void show() {

  System.out.println(凌哥7号);

  }}F2类实现接口S2(灵鸽六号):

  公共类F2实现S2 {

  @覆盖

  公共void show() {

  System.out.println(凌哥7号);

  }}G2类实现接口S2(灵鸽七号):

  公共类G2实现S2 {

  @覆盖

  公共void show() {

  System.out.println(凌哥7号);

  }}

抽象工厂、工厂

  Zz接口(七侠传承):

  公共接口Zz {

  S1 abc1(字符串a);

  S2 abc2(字符串a);}Nan类实现接口Zz(师傅):

  公共类Nan实现Zz {

  私有静态S1 S1;

  私人静态S2S2;

  公共S1 abc1(字符串a) {

  如果(长虹剑。等于(一)){

  S1=新A1();

  } else if(奔雷剑。等于(一)){

  s1=新f1();

  } else if(青光剑。等于(一)){

  s1=新E1();

  } else if(雨花剑。等于(一)){

  s1=新D1();

  } else if(旋风剑。等于(一)){

  s1=新G1();

  }否则{

  System.out.println(铸剑失败);

  }

  返回S1;

  }

  公共S2 abc2(字符串a) {

  如果(灵鸽一号。等于(一)){

  S2=新A2();

  } else if(灵鸽二号。等于(一)){

  S2=新F2();

  } else if(灵鸽三号。等于(一)){

  s2=新E2();

  } else if(灵鸽四号。等于(一)){

  s2=新D2();

  } else if(灵鸽五号。等于(一)){

  s2=新G2();

  }否则{

  System.out.println(领养失败);

  }

  返回S2;

  }}Nv类实现接口Zz(师娘):

  公共类女实现Zz {

  私有静态S1S1;

  私人静态S2S2;

  公共S1 abc1(字符串a) {

  如果(冰魄剑。等于(一)){

  S1=新B1();

  } else if(紫云剑。等于(一)){

  s1=新C1();

  }否则{

  System.out.println(铸剑失败);

  }

  返回S1;

  }

  公共S2 abc2(字符串a) {

  如果(灵鸽六号。等于(一)){

  s2=新B2();

  } else if(灵鸽七号。等于(一)){

  s2=新C2();

  }否则{

  System.out.println(领养失败);

  }

  返回S2;

  }}测试

  测试类:

  公开课演示{

  公共静态void main(String[] args) {

  System.out.println( -至阳传承- );

  //师傅

  楠楠=新楠();

  //造剑

  S1 a1=nan.abc1(长虹剑);

  S1 d1=nan.abc1(雨花剑);

  S1 e1=nan.abc1(青光剑);

  S1 f1=nan.abc1(奔雷剑);

  S1 g1=nan.abc1(旋风剑);

  //养鸽子

  S2 a2=nan.abc2(灵鸽一号);

  S2 d2=nan.abc2(灵鸽二号);

  S2 e2=nan.abc2(灵鸽三号);

  S2 f2=nan.abc2(灵鸽四号);

  S2 g2=nan.abc2(灵鸽五号);

  a1。show();

  D1。show();

  E1。show();

  f1。show();

  G1。show();

  a2。show();

  D2。show();

  E2。show();

  F2。show();

  G2。show();

  System.out.println( -至阴传承- );

  //女铸剑师

  Nv Nv=new Nv();

  S1 b1=nv.abc1(冰魄剑);

  S1 c1=nv.abc1(紫云剑);

  B1。show();

  C1。show();

  S2 b2=nv.abc2(灵鸽六号);

  S2 c2=nv.abc2(灵鸽七号);

  B2。show();

  C2。show();

  }}推荐学习: 《java视频教程》 以上就是实例详解爪哇岛抽象工厂模式的详细内容,更多请关注我们其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: