美文网首页技术文
Java设计模式之工厂模式(三种)

Java设计模式之工厂模式(三种)

作者: 阿菜的博客 | 来源:发表于2016-10-19 14:16 被阅读985次

工厂模式

工厂模式

参考

<br />

1. 简单工厂

理解

  • 简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。
  • 不修改代码的话,是无法扩展的。

例子

  • 产品接口
//产品接口
public interface ProductI {
    public void productName();
}
  • 产品实体类
public class ProductA implements ProductI {
    @Override
    public void productName() {
        System.out.println("product A");
    }
}
public class ProductB implements ProductI {
    @Override
    public void productName() {
        System.out.println("product B");
    }
}
  • 工厂类
// 简单工厂模式
public class Factory {
    public ProductI create(String productName) {
        switch (productName) {
            case "A":
                return new ProductA();
            case "B":
                return new ProductB();
            default:
                return null;
        }
    }
}
  • 测试类
public class Client {
    public static void main(String[] args) {
        Factory factory = new Factory();
        ProductI productA = factory.create("A");
        productA.productName();
        //
        ProductI productB = factory.create("B");
        productB.productName();
    }
}
  • 输出

product A
product B

<br />

2. 工厂方法

理解

  • 工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。
  • 在同一等级结构中,支持增加任意产品

例子

  • 产品接口和产品实体类和简单工厂都一样。

  • 工厂接口

public interface FactoryI {
    // 工厂的目的是为了生产产品
    public ProductI create();
}
  • 工厂实体类
public class FactoryA implements FactoryI {
    @Override
    public ProductI create() {
        return new ProductA();
    }
}
public class FactoryB implements FactoryI {
    @Override
    public ProductI create() {
        return new ProductB();
    }
}
  • 测试类
// 工厂方法模式
public class Client {
    public static void main(String[] args) {
        FactoryI factoryA = new FactoryA();
        ProductI productA = factoryA.create();
        productA.productName();
        //
        FactoryI factoryB = new FactoryB();
        ProductI productB = factoryB.create();
        productB.productName();
    }
}
  • 输出

product A
product B

<br />

3. 抽象工厂

理解

  • 抽象工厂是应对产品族概念的。比如说,每个汽车公司可能要同时生产轿车,货车,客车,那么每一个工厂都要有创建轿车,货车和客车的方法。
  • 应对产品族概念而生,增加新的产品线很容易,但是无法增加新的产品。
  • 和工厂方法的区别是,抽象工厂往往有多种方法,可以生产多种产品,即产品簇。

例子

  • 抽象工厂类
// 抽线工厂模式
public interface AbstractFactory {
    public ProductAI createProductA();
    public ProductBI createProductB();
}
  • 工厂实体类
public class Factory1 implements AbstractFactory {
    @Override
    public ProductAI createProductA() {
        return new ProductA1();
    }

    @Override
    public ProductBI createProductB() {
        return new ProductB1();
    }
}
public class Factory2 implements AbstractFactory {
    @Override
    public ProductAI createProductA() {
        return new ProductA2();
    }

    @Override
    public ProductBI createProductB() {
        return new ProductB2();
    }
}
  • 产品接口
//产品接口
public interface ProductBI {
    public void productName();
}
//产品接口
public interface ProductAI {
    public void productName();
}
  • 产品实体类
public class ProductA1 implements ProductAI {
    @Override
    public void productName() {
        System.out.println("product A1");
    }
}

其余三个产品实体类,略。

相关文章

  • 设计模式 - 工厂模式

    概述 我们都知道Java中共有 23 种设计模式,其中工厂模式分为三种,即:简单工厂模式(不在 23 种设计模式之...

  • 工厂模式

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

  • Java与模式

    《JAVA与模式》之简单工厂模式《JAVA与模式》之工厂方法模式《JAVA与模式》之抽象工厂模式

  • Java设计模式教程

    Java设计模式教程 Java工厂设计模式 Java抽象工厂模式 Java单例模式 Java建造者(Builder...

  • 设计模式之死磕工厂方法模式(原创)

    在设计模式之工厂模式中,我们提到过工厂模式仔细区分的话分为三种,分别是简单工厂模式、工厂方法模式以及抽象工厂模式。...

  • 代码段简单学习设计模式 -- 抽象工厂模式

    《JAVA与模式》之抽象工厂模式 大话设计模式 抽象工厂模式(Abstraci Factory): 提供一个创...

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

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

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

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

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

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

  • java设计模式

    一、《JAVA与模式》之工厂方法模式 二、《JAVA与模式》之抽象工厂模式 三、《JAVA与模式》之单例模式 四、...

网友评论

    本文标题:Java设计模式之工厂模式(三种)

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