简单工厂VS工厂方法
简单工厂
? 1.自定义多个算法
? 2.算法的实现在工厂类中实现,工厂类中包含一些算法逻辑,根据客户端选择条件动态管理相关类
? 3.客户端不需要指明调用的算法类
? 4.对新的产品or算法可扩展,但同时需要修改工厂实现类,实现对修改开发,
工厂方法模式
? 1.对具体产品有自己的产品工厂
? 2.对实现哪个产品的判断移动到客户端来判断,需要由客户端选择实现的工厂,生成产品
? 3.如果同时需要增加一个产品,需要同时增加产品类和产品工程类,修改的只是客户端
?
?
abstract class Product { public abstract void CreateProduct(); } //product a class Product_A extends Product { public void CreateProduct() { System.out.println("Create Product_A"); } } // product b class Product_B extends Product { public void CreateProduct() { System.out.println("Create Product_B"); } } // Factory class Product_Factory { public Product CreateProduct(int ind) { Product pro = null; if(ind == 1) pro = new Product_A(); if(ind == 2) pro = new Product_B(); return pro; } } // 工厂 interface CreateFactory { public Product CreateProductFactory(); } class Factory_A implements CreateFactory { public Product CreateProductFactory() { return new Product_A(); } } class Factory_B implements CreateFactory { public Product CreateProductFactory() { return new Product_B(); } } class Product_Factory_Test { public void Product_Factory_Client() { // simple factory Product_Factory fac = new Product_Factory(); fac.CreateProduct(1).CreateProduct(); fac.CreateProduct(2).CreateProduct(); // factory method CreateFactory Cfa = new Factory_A(); CreateFactory Cfb = new Factory_B(); Cfa.CreateProductFactory().CreateProduct(); Cfb.CreateProductFactory().CreateProduct();}
?