1.简单工厂模式
先看一下简单工厂模式
简单工厂
代码:
/**
*产品接口
*/
public interface Product {
}
/**
*具体产品1
*/
public class ConcretProduct1 implements Product{
}
/**
*具体产品2
*/
public class ConcretProduct2 implements Product{
}
/**
*工厂类
*/
public class SimpleFactory {
public static ConcretProduct1 createConcretProduct1() {
return new ConcretProduct1();
}
public static ConcretProduct2 createConcretProduct2() {
return new ConcretProduct2();
}
}
2.工厂方法模式
简单工厂模式大家比较熟悉也比较简单,但是简单工厂模式不符合设计模式中的开闭原则,当增加一个具体的产品时需要在工厂类增加方法。可以对工厂类进一步抽象:
工厂方法
public interface AbstractFactory {
Product createProduct();
}
public class ConcretProduct1 implements Product{
}
public class ConcretProduct2 implements Product{
}
public interface Product {
}
public class Product1Factory implements AbstractFactory{
@Override
public Product createProduct() {
return new ConcretProduct1();
}
}
public class Product2Factory implements AbstractFactory{
@Override
public Product createProduct() {
return new ConcretProduct2();
}
}
这种设计后,当增加一个新的产品,需要新增一个具体产品类和一个工厂类,缺点是当产品较多时,创建的工厂类较多,所以简单工厂和工厂方法模式都可以进行选择。
网友评论