工厂模式:
- 简单工厂模式:
- 简单介绍:属于创建型模式,是工厂模式的一种 简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例 简单工厂模式是工厂模式家族中最简单实用的模式 就是定义了一个创建对象的类,由这个类来封装实例化对象的行为(代码) 在软件开发中,当我们会用到大量的创建某种、某类或者某批对象时,就会使用到工厂模式 但是简单工厂模式中最大的缺点在于工厂类不够灵活,增加新的具体产品需要修改工厂类的判断逻辑代码,而且产品较多时,工厂方法代码逻辑将会非常复杂
- 代码演示:
-
首先创建几种商品:
public interface Car{ void produce(); }
public class Baoma implements Car{ public Baoma () { this.produce(); } @Override public void produce() { // TODO Auto-generated method stub System.out.println("生产的是宝马汽车"); } }
public class Benchi implements Car{ public Benchi () { this.produce(); } @Override public void produce() { // TODO Auto-generated method stub System.out.println("生产的是奔驰汽车"); } }
-
创建简单工厂类:
public class SimpleFactory{ public Car produceCar(String carType) { if(carType.equalsIgnoreCase("baoma")){ return new Baoma (); } else if(carType.equalsIgnoreCase("benchi")) { return new Benchi (); }else{ System.out.println("请输入正确的汽车类型!"); } return null; } }
-
简单工厂模式的优缺点 优点显而易见就是简单 但是缺点也是明显的就是传入的字符串出错就不能正确的创建对象 解决方式就是使用多个工厂方法模式:
class SimpleFactory{ public Baoma produceBaoma(){ return new Baoma(); } public Benchi produceBenchi(){ return new Benchi(); } }
-
静态工厂模式 :就是将上面的简单工厂模式 中的方法使用static进行修饰 不创建对象直接调用
class SimpleFactory{ public static Baoma produceBaoma(){ return new Baoma(); } public static Benchi produceBenchi(){ return new Benchi(); } }
-
上面的方式能解决传入的字符串出错的问题 但是还是有一个问题是明显的 类的创建是依赖工厂类 也就是说想要拓展程序必须对工厂类进行修改 这也就违背了开闭原则 解决的方式就是使用抽象工厂模式: 和上面的思路是一样的 创建多个工厂类 一般需要增加新的功能就新建工厂类即可 而不需要修改以前的代码:(还是使用上面的汽车的例子)
interface ProduceFactory{ Car produceCar(); } class ProduceBaoma implements ProduceFactory{ @Override public Baoma produceCar() { return new Baoma(); } } class ProduceBenchi implements ProduceFactory{ @Override public Benchi produceCar() { return new Benchi(); } }
-
- 简单介绍:属于创建型模式,是工厂模式的一种 简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例 简单工厂模式是工厂模式家族中最简单实用的模式 就是定义了一个创建对象的类,由这个类来封装实例化对象的行为(代码) 在软件开发中,当我们会用到大量的创建某种、某类或者某批对象时,就会使用到工厂模式 但是简单工厂模式中最大的缺点在于工厂类不够灵活,增加新的具体产品需要修改工厂类的判断逻辑代码,而且产品较多时,工厂方法代码逻辑将会非常复杂
- JDK中工厂模式的使用:就是在Calendar类中
- 总结:工厂模式的意义 将实例化对象的代码提取出来,放到一个类中统一管理和维护,达到和主项目的依赖关系的解耦。从而提高项目的扩展和维护性
来源:CSDN
作者:上山打小鼠
链接:https://blog.csdn.net/qq_41922608/article/details/104479002