首页 / 设计模式 / 设计模式--工厂模式
设计模式--工厂模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了设计模式--工厂模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1910字,纯文字阅读大概需要3分钟。
内容图文
![设计模式--工厂模式](/upload/InfoBanner/zyjiaocheng/1008/8dcf5fefbb334e46b60f7e5706e5f863.jpg)
简单工厂模式
简单工厂模式是指由一个工厂对象决定创建出哪一种类产品类的实例,但它不属于GOF 23种设计模式。简单工厂适用于工厂类负责创建的对象较少的场景,且客户端只需要传入工厂类的参数,对于如何创建对象的逻辑不需要关心。
简单工厂模式在JDK源码中也有很多使用,例如:Calendar类,LoggerFactory类种方法getLogger()。
缺点:工厂类的职责相对过重,不易于扩展过于复杂的产品结构。
工厂方法模式
工厂方法模式是指定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到实现类中进行。在工厂方法模式中用户只需要关心所需产品对应的工厂,无须关心创建细节,而且加入新的产品符合开闭原则。
工厂方法模式主要解决产品扩展的问题,在简单工厂中,随着产品链的丰富,如果每种汽车的创建逻辑有区别的话,工厂的职责会变的越来越多。
工厂方法适用于以下场景:
1、创建对象需要大量重复代码
2、客户端不依赖于产品类实例如何被创建、实现等细节
3、一个类通过其子类来指定创建哪个对象
工厂方法缺点:
1、类的个数容易过多,增加复杂度。
2、增加了系统的抽象性和理解难度。
抽象工厂模式
抽象工厂是指提供一个创建一系列或相互依赖对象的接口,无须指定他们具体的类。客户端不依赖于产品类实例如何被创建、实现等细节,强调的是一系列相关的对象一起使用创建对象需要大量重复的代码。需要提供一个产品类的库,使所有的产品以相同的接口出现,从而是客户端不依赖于具体实现。
实例代码:
public interface INote {
void edit();
}
public class ChineseNote implements INote{
@Override
public void edit() {
System.out.println("写笔记");
}
}
public abstract class CourseFactory {
public void init(){
System.out.println("初始化数据");
}
protected abstract INote createNote();
}
public class ChineseCourseFactory extends CourseFactory{
@Override
protected INote createNote() {
super.init();
return new ChineseNote();
}
}
public class Test {
public static void main(String[] args) {
ChineseCourseFactory factory = new ChineseCourseFactory();
factory.createNote().edit();
}
}
抽象工厂缺点:
1、规定了所有可能被创建的产品集合,扩展困难,需要修改抽象工厂的接口。
2、增加了系统的抽象和理解难度。
内容总结
以上是互联网集市为您收集整理的设计模式--工厂模式全部内容,希望文章能够帮你解决设计模式--工厂模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。