简单工厂
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();
}