简单工厂模式
1.简单工厂模式结构图
2.示例代码:
public interface Product {
void doSomething();
}
public class ProductA implements Product{
@Override
public void doSomething() {
System.out.println("这是产品A!");
}
}
public class ProductB implements Product{
@Override
public void doSomething() {
System.out.println("这是产品B!");
}
}
public class SimpleFactory {
private int a = 1;
private int b = 2;
public Product makeProduct(int type) {
Product product = null;
if (a == type) {
product = new ProductA();
} else if (b == type) {
product = new ProductB();
}
return product;
}
public Product makeProduct(String className) {
Product product = null;
if (null != className && className.trim() != ""){
try {
product = (Product)Class.forName(className).getDeclaredConstructor().newInstance();
} catch (Exception e) {
e.printStackTrace();
}
}
return product;
}
public Product makeProduct(Class<? extends Product> clazz) {
Product product = null;
if (null != clazz){
try {
product = clazz.getDeclaredConstructor().newInstance();
} catch (Exception e) {
e.printStackTrace();
}
}
return product;
}
}
-
总结:
优点:结构简单,调用方便;工厂和产品的职责区分明确.
缺点:工厂类单一,若产品增多,则代码臃肿,违背高聚合原则.