JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

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

wys521 2025-03-08 01:21:58 精选教程 54 ℃ 0 评论

工厂模式(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 引擎制造完成

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表