工厂模式学习和讨论

1.工厂模式有三种:简单工厂模式、工厂方法模式和抽象工厂模式。

1.1 简单工厂模式:

       简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。


1.2 工厂方法模式:

       工厂方法模式(FACTORY METHOD)是一种常用的对象创建型设计模式,此模式的核心精神是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。讲白了,就是每种类型都有自己的工厂类,而这些工厂类又都有相同的接口,在使用的同时,对象类型也来自共同的接口。

public interface Moveable {
void run();
}


public class Plane implements Moveable {
@Override
public void run() {
System.out.println("扇着翅膀前进中plane....");
}
}


public class PlaneFactory extends VehicleFactory{
public Moveable create() {
return new Plane();
}
}


VehicleFactory factory = new PlaneFactory();

Moveable m = factory.create();

m.run();


1.3 抽象工厂模式

抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。讲白了,就是将一系列生成产品的方法放在一个类中,面向的是一个产品族,这些方法的返回类型分别是各种产品的接口或抽象类。


2. 静态工厂方法:

根据定义和思想,凡是能生成对象的方法都称为工厂方法,从单例模式中可以看出,单例模式中的getInstance()方法也会返回对象,也可称为静态工厂方法。此称呼是后面别人对设计模式进行细化而起的名称。另外,单例模式一般返回一个对象,当返回对象的列表时,称为多例。



3. 工厂方法和抽象工厂比较:

工厂方法面向的是单个产品(对象)层面,零散的一个个类型,每次新增对象类型都需要新增对应的工厂,会出现工厂泛滥的情况。而抽象工厂面向的是多个产品层面(类似于产品线),将多个产品对象括起来,形成一个工厂组,一定程度上减少工厂泛滥,但若想增加一种产品,就需要对所有继承此工厂组的类中增加新类型。比较麻烦。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值