java工厂模式_jsp下一页

java工厂模式_jsp下一页1.概述 工厂模式按照《Java与模式》中的提法分为三类: 1) 简单工厂模式(Simple Factory) 2) 工厂方法模式(Factory Method) 3) 抽象工厂模式(Abstract Factory) 这三种模式从上到下逐步抽象,并且更具一般性。 还有一种分类法,就是将简单工厂模式

1.概述

工厂模式按照《Java与模式》中的提法分为三类:

1) 简单工厂模式(Simple Factory)

2) 工厂方法模式(Factory Method)

3) 抽象工厂模式(Abstract Factory)

这三种模式从上到下逐步抽象,并且更具一般性。

还有一种分类法,就是将简单工厂模式看为工厂方法模式的一种特例,两个归为一类。

下面是使用工厂模式的两种情况:

1) 在编码时不能预见需要创建哪种类的实例。

2) 系统不应依赖于产品类实例如何被创建、组合和表达的细节

java工厂模式_jsp下一页

 如图所示:工厂模式是一种创建型模式

2.三种模式详解

2.1 简单工厂模式

1) 工厂角色:负责创建所有产品。一个具体的类实现。

2) 抽象产品角色:负责所有产品的定义。接口或抽象类实现。

3) 具体产品角色:负责单个产品的细节。一个具体的类实现。

 java工厂模式_jsp下一页

理论都有了?那么具体怎么使用呢?

//抽象产品角色
public interface Tesla{
    public void createTesla();
}

//具体产品角色
public class Model3 implement Tesla{
    @Override
    public void createTesla(){
        System.out.println("create a model3..."); 
    }
}
public class Modely implement Tesla{
    @Override
    public void createTesla(){
        System.out.println("create a model y..."); 
    }
}

//工厂角色
public class TeslaFactory{
  //创建所需的类实例
  public static Tesla getTesla(String model){
    if ("3".equals(model)){
      return new Model3();
    }else if ("y".equals(model)){
      return new Modely();
    }
  }
}

//客户端
public class Customer{
  public static void main(String[] args){    
    Tesla tesla = getTesla("3");
    tesla.createTesla();
  }
}

 简单工厂优点:实现简单;客户端使用产品时不用自己去创建(new产品实例),只需告诉工厂我需要使用什么产品,即可得到产品。

 简单工厂缺点:如果新增一个产品的话会对工厂类代码进行重写,不符合开闭原则(扩展开放,修改关闭)。

2.2 工厂方法模式

1)抽象工厂角色:负责所有工厂的定义。抽象类或者接口来实现。

2)具体工厂角色:单个具体的工厂,负责生产单个对应的产品。一个具体的类来实现。

3)抽象产品角色:负责所有产品的定义。接口或抽象类实现。

4)具体产品角色:负责单个产品的细节。一个具体的类

java工厂模式_jsp下一页

//抽象产品角色
public interface Tesla{
    public void createTesla();
}

//具体产品角色
public class Model3 implement Tesla{
    @Override
    public void createTesla(){
        System.out.println("create a model3..."); 
    }
}
public class Modely implement Tesla{
    @Override
    public void createTesla(){
        System.out.println("create a model y..."); 
    }
}

//抽象工厂角色
public interface TeslaFactory{
  public Tesla getTesla();
}

//具体工厂角色
public class Model3Factory implement TeslaFactory{
    @Override
    public Tesla getTesla(){
        return new Model3(); 
    }
}
public class ModelyFactory implement TeslaFactory{
    @Override
    public Tesla getTesla(){
        return new Modely(); 
    }
}
//客户端 public class Customer{   public static void main(String[] args){         Tesla tesla = new Model3Factory().getTesla();     tesla.createTesla();   } }

工厂方法优点:符合开闭原则,增加⼀个产品类,只需要实现其他具体的产品类和具体的⼯⼚类;符合单⼀职责原则,每个⼯⼚只负责⽣产对应的产品。

工厂方法缺点:每个产品需要有对应的具体⼯⼚和具体产品类;类的个数容易过多,增加复杂度。

2.3 抽象工厂模式

1)抽象工厂角色:负责所有工厂的定义,并包含所有产品的定义。抽象类或者接口来实现。

2)具体工厂角色:负责生产对应的产品族。一个具体的类来实现。

3)抽象产品角色:负责单个产品的定义。接口或抽象类实现。

4)具体产品角色:负责单个产品的细节。一个具体的类

java工厂模式_jsp下一页

//待续

 

今天的文章java工厂模式_jsp下一页分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/45281.html

(0)
编程小号编程小号
上一篇 2023-09-07
下一篇 2023-09-07

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注