美文网首页
设计模式---工厂模式

设计模式---工厂模式

作者: 程序员方方土 | 来源:发表于2019-10-27 17:05 被阅读0次

设计模式之工厂模式

是java中最常见的设计模式之一,属于创建类型模式,提供了最佳的创建对象的方法。在工厂模式中,我们不会对客户端暴露创建逻辑,而是通过一个共同的接口来指向创建的对象。

特点:创建过程在其子类执行,应用于产品结果复杂的场合

使用情况:在代码中需要在不同情况下创建不同实例时

有什么优缺点

优点:

  • 1,创建对象时,调用者只需要知道其名称即可,

  • 2,扩展性高,如果需要增加一个产品,只需要扩展一个工厂类

  • 3,屏蔽产品的具体实现,调用者只需要关心产品接口

缺点:每增加一个产品时,都需要增加一个具体类和对象实现工厂,这样系统中的类就会成倍的增加,一定程度上增加了系统的复杂度,也增加了系统对具体类的依赖。

我们将创建一个 Car接口和实现 Car接口的实体类。下一步是定义工厂类 CarFactory。

CarPatternDemo,我们的演示类使用 CarFactory 来获取 Car对象。它将向 CarFactory 传递信息(HONGQI/ BENCHI/ BAOMA),以便获取它所需对象的类型。

步骤1:创建对象接口。

public interface Car {
    void performance();
}

步骤2:创建实现接口的实体类。

public class Hongqi implements Car{
 
    @Override
    public void performance() {
        System.out.println("This is hongqi performance");
    }
}
public class Benchi implements Car{
 
    @Override
    public void performance() {
        System.out.println("This is benchi performance");
    }
}
 
public class Baoma implements Car{
 
    @Override
    public void performance() {
        System.out.println("This is baoma performance");
    }
}

步骤3:创建一个工厂,生成基于给定信息的实体类的对象。

public class CarFactory{
    public Car getCar(String carType){
        if(carType == null){
           return null;
        }
        if(carType.equalsIgnoreCase("HONGQI")){
            return new Hongqi();
        }else if(carType.equalsIgnoreCase("BENCHI")){
            return new Benchi();
        }else if(carType.equalsIgnoreCase("BAOMA")){
            return new Baoma();
        }
        return null;
    }
}

步骤4:使用该工厂,通过传递类型信息来获取实体类的对象。

public class factoryCarTypeDemo{
    public static void main(String[] args) {
        CarFactory carFactory = new CarFactory();
        //获取 Hongqi 的对象,并调用它的 performance 方法
        Car car1 = carFactory.getCar("HONGQI");
        car1.performance();
 
        //获取 Benchi 的对象,并调用它的 performance 方法
        Car car2 = carFactory.getCar("BENCHI");
        car2.performance();
 
        //获取 Baoma 的对象,并调用它的 performance 方法
        Car car3 = carFactory.getCar("BAOMA");
        car3.performance();
    }
}

输出结果:

This is hongqi performance
This is benchi performance
This is benchi performance

相关文章

  • 设计模式四、抽象工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 抽象工厂模式 ...

  • 工厂模式

    java设计模式-工厂模式 工厂模式: 工厂模式是java设计模式里最常用的设计模式之一。 工厂模式属于创建型模式...

  • 设计模式之工厂模式

    设计模式之工厂模式 标签(空格分隔): 设计模式 工厂模式 设计模式的感念 设计模式的应用 工厂设计模式的产生 工...

  • 设计模式三、工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 工厂模式 在一...

  • 设计模式一、单例模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 简单单例(推荐...

  • 单件设计模式

    一、定义 设计模式 设计模式就是一种更好的编写代码方案。 常见设计模式 工厂设计模式、抽象工厂设计模式、抽象工厂设...

  • iOS设计模式(三)之抽象工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • iOS设计模式(一)之简单工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • iOS设计模式(二)之工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • 常用设计模式

    设计模式 工厂模式 工厂模式思路上分:简单工厂模式,工厂模式, 抽象工厂模式// 抽象工厂模式可以代替工厂模式,做...

网友评论

      本文标题:设计模式---工厂模式

      本文链接:https://www.haomeiwen.com/subject/hfcmvctx.html