首页 > 其他 > 详细

Spark开发-Spark中的设计模式_创建型模式大类

时间:2021-01-11 18:25:23      阅读:46      评论:0      收藏:0      [点我收藏+]

设计模式

原则:

创建型模式

这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。
这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。	
    原型模式     (Prototype Pattern)
    单例模式     (Singleton Pattern)
    工厂模式     (Factory Pattern)
    抽象工厂模式 (Abstract Factory Pattern)
    建造者模式   (Builder Pattern)
 说明:
    工厂模式: 简单工厂模式(静态方法模式) 工厂方法模式 
	抽象工厂模式

1.原型模式

 class SparkConf(loadDefaults: Boolean) extends Cloneable with Logging with Serializable 

2.单例模式

  Spark中的 伴生对象就是属于单例模式

3.建造者模式

 SparkSession
 应用或使用:--使用场景 - 在客户端使用链式调用,一步一步的把对象构建出来
 val spark = SparkSession.builder()
  .appName("Common")
  .master("local[0]")
  .getOrCreate()

说明:

 Builder模式的好处之一是可以将对象的创建权交给Builder类,
  可将对象的配置传递和被创建对象隔离开,
  方便使用配置文件来配置创建对象,
SparkSession通过 SparkSession类,SparkSession静态类和Builder内部类实现了非常方便调用的接口,
  可以灵活根据参数和配置文件来创建SparkSession对象
  场景: 当一个类的构造函数参数超过4个,而且这些参数有些是可选的时,我们通常有两种办法来构建它的对象
  应用: 构建者解决复杂对象的构建问题
  作为对比常用: Javabean 模式

模式源码

   @InterfaceStability.Stable
   class SparkSession private(
       @transient val sparkContext: SparkContext,
       @transient private val existingSharedState: Option[SharedState],
       @transient private val parentSessionState: Option[SessionState],
       @transient private[sql] val extensions: SparkSessionExtensions)
     extends Serializable with Closeable with Logging {
 object SparkSession extends Logging {
  /**
   * Builder for [[SparkSession]].
   */
  @InterfaceStability.Stable
  class Builder extends Logging {

如何实现

     在 SparkSession 中创建一个静态内部类 Builder,然后将 SparkSession 中的参数都复制到Builder类中。
     在 SparkSession中创建一个private的构造函数,参数为Builder类型
	     
     在Builder中创建一个public的构造函数,参数为Computer中必填的那些参数, 。
     在Builder中创建设置函数,对SparkSession中那些可选参数进行赋值,返回值为Builder类型的实例
     在Builder中创建一个build()方法,在其中构建Computer的实例并返回
	    def builder(): Builder = new Builder

4.工厂模式

Factory Pattern
  RowFactory  
  A factory class

参考:

  Builder模式实战2 (Spark/SparkSession)  https://www.cnblogs.com/arxobject/p/13670470.html
  Spark涉及的设计模式-创建型-原型模式 https://blog.csdn.net/sinat_35045195/article/details/107692251

Spark开发-Spark中的设计模式_创建型模式大类

原文:https://www.cnblogs.com/ytwang/p/14262434.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!