在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

Java工厂模式怎么实现

109次阅读
没有评论

共计 2319 个字符,预计需要花费 6 分钟才能阅读完成。

本篇内容介绍了“Java 工厂模式怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

概念:工厂模式负责将大量有共同接口的类实例化。

相关角色:抽象工厂:创建对象的具体工厂类必须实现这个接口
 具体工厂:实现了抽象工厂接口的具体工厂类
 抽象产品:创建的具体对象的超类型(父抽象类或父接口)
 具体产品:创建的具体对象。

1)简单工厂模式(静态工厂方法模式):

概念:新建一个工厂类,该工厂类有一个静态的工厂方法,根据这个静态工厂方法的入参来决定创建的对象是哪个类型。//  工厂类
 public class Creator {
 //  静态工厂方法:根据入参 condition 来决定返回对象的类型。public static ConcreteProduct factory(condition){if (condition  满足   条件 A) {return new ConcreteProductA();  //  注:ConcreteProduct 是 ConcreteProductA 和 ConcreteProductB 的超类
 } else if (condition  满足   条件 B) {return new ConcreteProductB();
 } else {
 //  返回一个默认 ConcreteProductX 对象   或   直接抛出异常
 缺点:新增类型 (eg:ConcreteProductC) 时,需要修改静态工厂方法,没有开闭原则的要求。举例:java.text.DateFormat 的 getDateInstance()方法。注:DateFormat 这个工厂类,是通过重载 getDateInstance()方法的方式来进行条件的判断。

2)工厂方法模式:

概念:新建一个工厂接口(或工厂抽象类)、多个具体工厂类,所有的具体工厂类都实现了工厂接口中定义的工厂方法,每个具体工厂类只产生特定类型的对象。//  抽象工厂
 public interface Creator {
 //  工厂方法
 public Product factory();
 //  具体工厂 ConcreteCreatorA  实现了工厂接口 Creator
 public class ConcreteCreatorA implements Creator {
 //  工厂方法
 public Product factory() {return new ProductA();
 //  具体工厂 ConcreteCreatorB  实现了工厂接口 Creator
 public class ConcreteCreatorA implements Creator {
 //  工厂方法
 public Product factory() {return new ProductB();
 缺点:新增类型 (eg:ProductC) 时,需要新增对应的具体工厂,当类型较多时(具体工厂类也会随之增多),不容易维护。工厂方法模式和模板方法模式的比较:1)二者都是基于方法的,都是将具体工作交给子类。2)工厂方法模式将创建的工作推延给子类,模板方法模式将剩余的逻辑交给子类。举例:java 集合中的工厂模式://  抽象工厂
 public interface List E  extends Collection E  {Iterator E  iterator(); //  工厂方法
 //  具体工厂
 public class ArrayList E  implements List E  {public Iterator E  iterator() {return new Itr(); // java.util.Vector.Itr  实现了 Iterator E 接口
 //  具体工厂
 public class Vector E  implements List E  {public synchronized Iterator E  iterator() {return new Itr(); // java.util.ArrayList.Itr  实现了 Iterator E 接口
 }

3)抽象工厂模式:

概念:新建一个工厂接口(或工厂抽象类)、一个具体工厂类,这个具体工厂类实现了工厂接口中定义的多个工厂方法,故这个具体工厂类可以产生多种类型的对象。//  抽象工厂:规定了多个工厂方法
 public interface Creator {
 //  创建 A 系列产品对象的工厂方法
 public ProductA factoryA();
 //  创建 B 系列产品对象的工厂方法
 public ProductB factoryB();
 //  具体工厂:实现了抽象工厂的多个工厂方法
 public class ConcreteCreator implements Creator {
 //  创建 A 类产品对象的工厂方法
 public ProductA factoryA() {return new ProductA1();  //  注:ProductA1 implements ProductA
 //  创建 B 类产品对象的工厂方法
 public ProductB factoryB() {return new ProductB1(); //  注:ProductB1 implements ProductB
 缺点:新增其它系列 (eg:ProductC) 的产品时,需要修改抽象工厂(在抽象工厂中添加新的工厂方法)。

“Java 工厂模式怎么实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计2319字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 久久无码专区国产精品 | avtomy影院首页亚洲 | 四虎影院在线视频 | 在线免费视频国产 | 久久久在线视频 | 各种少妇正面着bbw撒尿视频 | 野花社区视频在线观看 | 欧美色图亚洲 | 国产精品v免费视频 | 国产在线精品成人一区二区三区 | 欧美成人se01短视频在线看 | 色欲天天天天天综合网 | 成人一级免费视频 | 午夜18禁自慰jk爆乳网站 | 99热成人精品国产免国语的 | 黄色淫片| 一本色道久久88精品综合 | 久久精品亚洲中文字幕无码麻豆 | 久久人妻夜夜做天天爽 | 四虎影院免费网址 | 久久精品亚洲中文字幕无码麻豆 | 久久精品国产只有精品2020 | 日韩视频在线免费观看 | 国产六月婷婷爱在线观看 | 国产大片黄在线观看 | 久久久久久人妻一区精品 | 亚洲无线码一区二区三区 | 女女女女bbbbbb毛片在线 | 黄视频在线观看免费 | 男人天堂伊人 | 亚洲精品入口一区二区乱成人 | 男女啪啪成人免费网站 | 在线国产观看 | 久久久久亚洲av综合波多野结衣 | 一区二区三区四区在线播放 | 国产精品免费看久久久久 | 精品久久久久久久久免费影院 | 自拍偷拍视频在线 | 伊人久久成人成综合网222 | 亚洲日产综合欧美一区二区 | 一级片免费在线观看 |