工厂模式:Factory

工厂模式是用来生成对象的。假如我们有一个Product类,如果要创建一个实例就new Product();但是如果这个类有几个子类,创建子类对象new ProductA();new ProductB();这样需要每个子类都创建一个对象很是麻烦,而且还要修改以前的代码。这样我们可以把Product类抽象成一个接口。

class ProductA implements Product
{
//添加方法的实现
}
class ProductB implements Product
{
//添加方法的实现
}
Class Factory
{
public static Product create(String className)
{
Return Class.forName(className).newInstance();
}
}

 如果className为”com.jeedroid.ProductA”的话那么就返回了ProductA的实例。所以使用工厂模式需要定义一个接口,还有对该接口的实现,还要有一个Factory来生产实例。
如果我们还有一个Product2接口,那么我们产生Product2A和Product2B的话,又要写一个Factory来产生实例,那么我们能不能在一个Factory里面实现同时创建Product和Product2的实现的实例呢?这就用到了抽象工厂。
抽象工厂(Abstract Factory)和上面的工厂方法(Factory Method)的不同点就在于创建对象的复杂度。举个例子:
假如有两个电脑生产商LenovoFactory(工厂)和AcerFactory(工厂),每个工厂都有 createPC(),createMouse()这两个方法用来生成PC和Mouse,,Abstract Factory为这个产品提供一个统一的创建接口来创建一系列的产品

 

public abstract class Factory
{
public abstract PC create();
Public abstract Mouse create2();
}
public class LenovoFactory extends Factory
{
public PC create()
{
Return new LenovoPC();
}
public Mouse create2()
{
return new LenovoMouse();
}
}

public class AcerFactory extends Factory
{
public PC create()
{
Return new AcerPC();
}
public Mouse create2()
{
Return new AcerMouse();
}
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值