工厂和抽象工厂模式
Last updated
Last updated
package com.wangjun.designPattern.factory;
public interface IProduct {
public String info();
}package com.wangjun.designPattern.factory;
public class Product1 implements IProduct {
@Override
public String info() {
return "Product1";
}
}package com.wangjun.designPattern.factory;
public class ProductFactory {
public static IProduct createProduct(int type) {
switch(type) {
case 1:
return new Product1();
case 2:
return new Product2();
case 3:
return new Product3();
case 4:
return new Product4();
case 5:
return new Product5();
default:
System.out.println("没有此型号的产品");
return null;
}
}
}package com.wangjun.designPattern.factory;
public class Main {
public static void main(String[] args) {
//根据传入的参数来创建具体的类
IProduct product1 = ProductFactory.createProduct(1);
System.out.println("产品名:" + product1.info());
IProduct product2 = ProductFactory.createProduct(2);
System.out.println("产品名:" + product2.info());
IProduct product3 = ProductFactory.createProduct(3);
System.out.println("产品名:" + product3.info());
}
}产品名:Product1
产品名:Product2
产品名:Product3package com.wangjun.designPattern.abstractFactory;
public interface IFactory {
public IProduct createProduct(int type);
}package com.wangjun.designPattern.abstractFactory;
public class Factory1 implements IFactory {
@Override
public IProduct createProduct(int type) {
System.out.println("工厂1生产");
if(type == 1) {
return new Product1();
}else if(type == 2) {
return new Product2();
}else {
System.out.println("不支持此类型的产品");
}
return null;
}
}package com.wangjun.designPattern.abstractFactory;
public interface IProduct {
public String info();
}package com.wangjun.designPattern.abstractFactory;
public class Product1 implements IProduct {
@Override
public String info() {
return "Product1";
}
}package com.wangjun.designPattern.abstractFactory;
public class ProductFactory {
public static IProduct createProduct(int type) {
IFactory factory = null;
//1,2类型使用工厂1生成;3,4类型使用工厂2生产;5,6类型使用工厂3生产
if(type >= 1 && type <= 2) {
factory = new Factory1();
}else if(type >=3 && type <= 4) {
factory = new Factory2();
}else if(type >= 5 && type <= 6) {
factory = new Factory3();
}else {
System.out.println("不支持此类型的产品");
return null;
}
IProduct product = factory.createProduct(type);
return product;
}
}package com.wangjun.designPattern.abstractFactory;
public class Main {
public static void main(String[] args) {
IProduct product1 = ProductFactory.createProduct(1);
System.out.println("产品名:" + product1.info());
IProduct product2 = ProductFactory.createProduct(4);
System.out.println("产品名:" + product2.info());
IProduct product3 = ProductFactory.createProduct(5);
System.out.println("产品名:" + product3.info());
}
}工厂1生产
产品名:Product1
工厂2生产
产品名:Product4
工厂3生产
产品名:Product5