工厂模式详解

工厂模式

定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对。
工厂模式根据抽象程度的不同分为:

  1. 简单工厂
  2. 抽象工厂
  3. 工厂方法
    简单工厂:一个模块仅需要一个工厂类,没有必要把他生产出来,使用静态方法
    抽象工厂(Abstract Factory ):客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。
    给大家举个例子:
    追 MM 少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是 MM 爱吃的东西,
    虽然口味有所不同,但不管你带 MM 去麦当劳或肯德基,只管向服务员说“来四个鸡
    翅”就行了。麦当劳和肯德基就是生产鸡翅的 Factory(工厂)
    代码演示:
    public abstract class AbstractCreator {
    //创建A产品家族
    public abstract AbstractProductA createProductA();
    //创建B产品家族
    public abstract AbstractProductB createProductB();
    }’’

工厂方法(Factory Method ):核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。
在接着上面的例子:
请 MM 去麦当劳吃汉堡,不同的 MM 有不同的口味,要每个都记住是一件烦人的事情,我一般采用 Factory Method 模式,带着 MM 到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,让 MM 直接跟服务员说就行了。

应用场景:

  • 日志记录器
  • 数据库访问
  • 设计一个连接服务器的框架,需要三个协议,“pop3”、“IMAP”、“HTTP”可以把这个三个作为产品类,共同实现一个接口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值