JAVA学习*工厂模式
概念:
工厂模式是一种创建对象的设计模式,它将对象的创建和使用分离,提高了代码的可维护性和可扩展性。也就是创建一个专门负责创建对象的工厂类,将对象的创建过程进行封装。
案例:
能有工厂才生产产品A和产品B
简单工厂
代码展示:
//抽象产品接口
public interface Product {
void use();
}
//具体产品类
public class ProductA implements Product{
@Override
public void use() {
System.out.println("产品A的使用");
}
}
//具体产品类
public class ProductB implements Product{
@Override
public void use() {
System.out.println("产品B的使用");
}
}
//定义工厂类,来生产产品
public class Factory {
public static Product createProduct(String type) {
if("A".equals(type)) {
return new ProductA();
}else if("B".equals(type)) {
return new ProductB();
}else return null;
}
}
public class Test {
public static void main(String[] args) {
Product a = Factory.createProduct("A");
Product b = Factory.createProduct("B");
a.use();
b.use();
}
}
代码解释:
1、定义了一个工厂类来负责创建产品对象。
2、但当产品类数量过多时,工厂类会过于复杂。
工厂方法模式
代码展示:
//抽象产品接口
public interface Product {
void use();
}
//具体产品类
public class ProductA implements Product{
@Override
public void use() {
System.out.println("产品A的使用");
}
}
//具体产品类
public class ProductB implements Product{
@Override
public void use() {
System.out.println("产品B的使用");
}
}
//定义抽象工厂接口
public interface Factory {
Product creatProduct();
}
//定义具体工厂,生产产品A
public class ProductAFactory implements Factory{
@Override
public Product creatProduct() {
return new ProductA();
}
}
//定义具体工厂,生产产品B
public class ProductBFactory implements Factory{
@Override
public Product creatProduct() {
return new ProductB();
}
}
//测试类
public class Test {
public static void main(String[] args) {
Factory factoryA = new ProductAFactory();
Factory factoryB = new ProductBFactory();
Product productA = factoryA.creatProduct();
Product productB = factoryB.creatProduct();
productA.use();
productB.use();
}
}
代码解释:
此代码将工厂抽象化,Factory
定义了创建产品的抽象方法。ProductAFactory
ProductBFactory
定义每个抽象工厂分别专门生产某个产品。通过creatProduct()
方法来创建对象。