【设计模式】-简单工厂模式-SampleFactory

来源:互联网 发布:翻译软件app 编辑:程序博客网 时间:2024/06/06 07:04

简介

简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式。


角色

  • 抽象产品
  • 多个具体产品
  • 工厂

使用示例

抽象产品–汽车

// 抽象产品interface ICar {    void printBrand();}

具体产品–奔驰

// 具体产品-奔驰class Benz implements ICar {    @Override    public void printBrand() {        System.out.println("奔驰");    }}

具体产品–奥迪

// 具体产品-奥迪class Audi implements ICar {    @Override    public void printBrand() {        System.out.println("奥迪");    }}

工厂-汽车生产厂

// 工厂class CarFactory {    public static ICar produceCar(String brand) {        if (brand.equals("Benz")) {            return new Benz();        } else if (brand.equals("Audi")) {            return new Audi();        } else {            System.out.println("无法生产该品牌汽车");            return null;        }    }}

测试代码

package org.iti.dm.samplefactory;public class SampleFactoryMode {    public static void main(String[] args) {        ICar car = CarFactory.produceCar("Benz");        car.printBrand();        car = CarFactory.produceCar("Audi");        car.printBrand();        car = CarFactory.produceCar("tailyou");    }}

结果如下:
这里写图片描述


Demo完整代码

package org.iti.dm.samplefactory;public class SampleFactoryMode {    public static void main(String[] args) {        ICar car = CarFactory.produceCar("Benz");        car.printBrand();        car = CarFactory.produceCar("Audi");        car.printBrand();        car = CarFactory.produceCar("tailyou");    }}// 抽象产品interface ICar {    void printBrand();}// 具体产品-奔驰class Benz implements ICar {    @Override    public void printBrand() {        System.out.println("奔驰");    }}// 具体产品-奥迪class Audi implements ICar {    @Override    public void printBrand() {        System.out.println("奥迪");    }}// 工厂class CarFactory {    public static ICar produceCar(String brand) {        if (brand.equals("Benz")) {            return new Benz();        } else if (brand.equals("Audi")) {            return new Audi();        } else {            System.out.println("无法生产该品牌汽车");            return null;        }    }}
0 0