设计模式——工厂模式

引言

网上有很多介绍设计模式系列的优秀文章,看懂不一定是真懂,能写出来,说出个1、2、3点才算是真的懂了,如果能灵活的应用到工作中才算是真的熟练。

1、模式场景

我们上学的时候经常去文具店买笔,现在需要买铅笔、钢笔、彩笔,有一种选择是分别去铅笔专卖店,钢笔专卖店,彩笔专卖店买到对应的笔。

2、模式结构

1、抽象产品类:Product(对应模式场景中的笔)
抽象产品是所有实例公有的父类接口。
2、具体产品类:ConcreteProduct(对应模式场景中具体的铅笔、钢笔、彩笔等)
实现抽象产品类的具体产品类实例。
3、抽象工厂类:Factory(对应模式场景中的卖笔的专卖店)
抽象的定义了构造抽象产品的类型。
4、具体工厂类:ConcreteFactory(对应模式场景中铅笔专卖店)
实现抽象工厂类,构造具体产品类实例。

3、示例代码

3.1、抽象产品

public interface Pen {
    void write();
}

3.2、具体产品

public class Pencil implements Pen {
    @Override
    public void write() {
        System.out.println("write by pencil ...");
    }
}

3.3、抽象工厂

public interface PenFactory {
    Pen createPen();
}

3.4、具体工厂

public class PencilFactory implements PenFactory {
    @Override
    public Pen createPen() {
        return new Pencil();
    }
}

4、测试类

public class PenTest {
    public static void main(String[] args) throws Exception {
        PenFactory penFactory = new PencilFactory();
        Pen pencil = penFactory.createPen();
        pencil.write();
    }
}

控制台输出:

write by pencil ...

4、模式优点

  • 工厂模式中,用户只需关心对应产品的工厂实现类就行,无需知道具体产品类类名。
  • 工厂模式中,工厂类和产品类是基于多态性设计,工厂可以自主的选择创建何种产品对象。
  • 工厂模式中,加入新的产品时,不需要修改原来代码,只需要添加新的产品和新的工厂实现类,扩展性强。

5、模式缺点

  • 系统中类的数量,随着产品的数量成对的增加,增加了系统的复杂性,在编译和运行时,增加了系统的开销。

结束语

工厂模式中包含四个角色,使用了面向对象的多态性,保留了简单工厂的优点,克服了简单工厂的缺点,系统有良好的灵活性和扩展性,下一篇将介绍:设计模式——建造者模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值