简单工厂模式
定义
简单工厂严格意义来讲不能算作是一个设计模式,通常使用一个静态方法接收参数,通过参数来判断实例化不同的实现类。
优缺点
- 优点:简单工厂模式能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。明确区分了各自的职责和权力,有利于整个软件体系结构的优化。
- 缺点:很明显工厂类集中了所有实例的创建逻辑,违反高内聚的责任分配原则,它所能创建的类必须是提前考虑好的,不能直接扩展,只能修改方法内部的实现。
工厂方法模式
定义
工厂方法模式——定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
优缺点
- 优点:符合依赖倒置原则,依赖抽象,不依赖具体类;具有相应的灵活性,可以方便的进行扩展。
- 缺点:相对于简单工厂,实现稍微复杂点。(-_-)!!!
抽象工厂模式
定义
抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
优缺点
- 优点:抽象工厂模式隔离了具体类的生产,使得客户并不需要知道什么被创建;当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象;增加新的具体工厂和产品族很方便,无须修改已有系统,符合“开闭原则”。
- 缺点:增加新的产品复杂,需要修改抽象工厂和所有的具体工厂类。
总结
- 简单工厂 : 用来生产同一等级结构中的任意产品,不支持拓展新产品。
- 工厂方法 :用来生产同一等级结构中的固定产品,支持拓展新产品。
- 抽象工厂 :用来生产不同产品族的全部产品,支持拓展新产品以及产品族。
本博文为读书笔记:
《Head First 设计模式》
《大话设计模式》
《Android源码设计模式解析与实战》