创建型设计模式——工厂模式和抽象工厂模式

createh52周前 (04-21)技术教程14

工厂模式(Factory Method):简单点讲 就是一个接口 多个实现 需要对应的实现 就通过对应的条件来获取

工厂模式是一条创建同一系列产品的流水线

抽象工厂(Abstract Factory):简单讲工厂模式是一条创建同一系列产品的流水线,那么抽象工厂模式就是多条创建不同产品的流水线的一个集合工厂,

但是,各个流水线(工厂)之间是相互独立的,并且流水线(工厂)是生产一整套有关联或者有依赖的产品(至少有两种产品)

package com.wangguo.factory;


public interface Engine {

    void make();
}

class BmwEngine implements Engine{

    @Override
    public void make() {
        System.out.println("BMW 引擎制造完成");
    }
}

class BenzEngine implements Engine{

    @Override
    public void make() {
        System.out.println("BENZ 引擎制造完成");
    }
}

class EngineFactory{

    static Engine getEngine(String name){
        if ("bwm".equals(name)) {
            return new BmwEngine();
        }else if("benz".equals(name)){
            return new BenzEngine();
        }
        return  null;

    }
}
package com.wangguo.factory;


public interface Body {
    
    void make();
}


class BmwBody implements Body{

    @Override
    public void make() {
        System.out.println("BMW 车身制造完成");
    }
}

class BenzBody implements Body{

    @Override
    public void make() {
        System.out.println("BENZ 车身制造完成");
    }
}

class BodyFactory{

    static Body getBody(String name){
        if ("bwm".equals(name)) {
            return new BmwBody();
        }else if("benz".equals(name)){
            return new BenzBody();
        }
        return  null;

    }
}
package com.wangguo.factory;

/**
 * 汽车工厂 里面造引擎 和车体
 *
 * 1.工厂模式:简单点讲  就是一个接口 多个实现  需要对应的实现 就通过对应的条件来获取 获取方式如下 BodyFactory.getBody(bodyName)
 * 工厂模式是一条创建同一系列产品的流水线
 *
 */
public class CarFactory  {

    private Body body;
    private Engine engine;

   public  void makeCar(String bodyName,String engineName){
       body = BodyFactory.getBody(bodyName);
       body.make();
       Engine engine = EngineFactory.getEngine(engineName);
       engine.make();
       System.out.println(bodyName +"车 制造完成");
   }
}

package com.wangguo.factory;


/**
 * 2.抽象工厂:简单讲工厂模式是一条创建同一系列产品的流水线,那么抽象工厂模式就是多条创建不同产品的流水线的一个集合工厂,
 * 但是,各个流水线(工厂)之间是相互独立的,并且流水线(工厂)是生产一整套有关联或者有依赖的产品(至少有两种产品)
 */
public interface IMakeCarFactory {

    void makeCar();
}

class MakeCarFactory {

    static IMakeCarFactory makeCarFactory(String name) {
        if ("benz".equals(name)) {
            return new BenzMakeFactory();
        } else if ("bmw".equals(name)) {
            return new BmwMakeFactory();
        } else {
            return null;
        }
    }
}


class BenzMakeFactory implements IMakeCarFactory {

    static Engine engine = new BenzEngine();
    static Body body = new BenzBody();

    @Override
    public void makeCar() {
        body.make();
        engine.make();
    }
}

class BmwMakeFactory implements IMakeCarFactory {

    static Engine engine = new BmwEngine();
    static Body body = new BmwBody();

    @Override
    public void makeCar() {
        body.make();
        engine.make();

    }
}


package com.wangguo.factory;

public class FactoryShow {

    public static void main(String[] args) {
        CarFactory carFactory = new CarFactory();
        //1.用户需要一辆benz车
        carFactory.makeCar("benz","benz");

        //2.问题来了  单一的产品是做了的 但是他组装了一台怪异的汽车 或许这车不能开 ?
        carFactory.makeCar("benz","bwm");

        //3.把造相同型号的操作放到一个工厂里面,也就是工厂里面的工厂
        IMakeCarFactory benz = MakeCarFactory.makeCarFactory("benz");
        benz.makeCar();

    }
}
//结果
BENZ 车身制造完成
BENZ 引擎制造完成
benz车 制造完成
BENZ 车身制造完成
BMW 引擎制造完成
benz车 制造完成
BENZ 车身制造完成
BENZ 引擎制造完成

相关文章

Java设计模式:工厂模式与抽象工厂模式深度解读

Java设计模式:工厂模式与抽象工厂模式深度解读在Java的世界里,设计模式是解决常见软件设计问题的一套经过验证的解决方案。其中,工厂模式和抽象工厂模式是创建型模式的两大支柱,它们就像建筑工地上的“预...

Java工厂方法模式详解:从流水线到代码的智慧

一、现实中的工厂启示场景1:汽车制造假设某汽车公司有多个分厂:o 北京分厂:生产燃油车o 上海分厂:生产电动车o 广州分厂:生产混动车总部的生产规范手册规定:1. 所有分厂必须实现生产汽车()方法2....

JAVA设计模式深度解读:工厂模式与抽象工厂模式的差异

JAVA设计模式深度解读:工厂模式与抽象工厂模式的差异在软件开发的世界里,设计模式就像烹饪界的食谱,它们指导我们如何构建系统以提高可维护性和扩展性。今天,我们将聚焦于两种经典的创建型设计模式——工厂模...

Java抽象工厂模式解析:原理、案例与最佳实践

一、模式说明抽象工厂模式(Abstract Factory Pattern)是创建型设计模式的集大成者,通过提供对象创建的抽象接口,让具体工厂类负责生产一组相关或相互依赖的对象。该模式强调"产...

简单工厂模式详解:优缺点、实现步骤、以及应用场景全面总结

简单工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一,这种类型的设计模式属于创建型模式。本文从一个具体的例子逐步分析,来体会简单工厂模式的应用场景和利弊@mikechen...

Java 中使用泛型实现工厂模式

概述在本文中,我们将学习如何在 Java 中使用泛型实现工厂模式。什么是工厂模式?在面向对象编程中,工厂模式是一种创建型设计模式,在被调用时创建对象。工厂是一个在工厂方法被调用时创建原型类(也称为接口...