java工廠模式訓練

CHAT小強發表於2019-01-16

一家產品公司,按照客戶要求需要生產產品a,b,c三類產品

建立一個產品抽象類,抽象方法由具體產品類去實現

public abstract class Product {
    //產品的抽象類
    //由具體產品類去實現
   public abstract void createProdut();
}

產品A

public class A extends Product {

    @Override
    public void createProdut() {
        Log.d("A","createProduct A success");
    }
}

建立抽象工廠

public abstract class ProductFactory {
    //抽象工廠方法
    //具體生產什麼由具體工廠去實現
    public abstract <T extends Product> T createProduct(Class<T> cls);
}

具體工廠

public class ProductionFactory extends ProductFactory {
    @Override
    public <T extends Product> T createProduct(Class<T> cls) {
        Product product = null;
        try {
             product = (Product) Class.forName(cls.getName()).newInstance();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return (T) product;
    }
}

客戶

ProductionFactory factory = new ProductionFactory();
A a = factory.createProduct(A.class);
a.createProdut();

相關文章