Scalatrait实现调用链模式

需求

代码

package demo01

/**
  * Created by 一个蔡狗 on 2020/3/30.
  */
object Trait04 {


  //  进入办公室
  trait  office{
    def  office(name:String ): Unit ={
      println("第六步 "+name+" 努力工作!   走向人生巅峰吧 !!")
    }

  }


  //入职体检

  trait  medical extends  office{
    override def office(name: String): Unit = {
      println("第五步 "+name+" 您好!   您的入职体检通过了,赶紧入职把!")
      super.office(name)
    }

  }


  //面试

  trait   interview extends  medical{
    override def office(name: String): Unit = {
      println("第四步 "+name+" 您好!   您的面试通过了,赶紧做个体检把!")
      super.office(name)
    }
  }



  // 高中   HighSchool
  trait  HighSchool extends  interview{
    override def office(name: String): Unit = {
      println("第三步 "+name+" 您好!   您已经获得 高中毕业证,赶紧面试吧!")
      super.office(name)
    }

  }
  // 高中毕业
  trait  HighGraduation extends  HighSchool{
    override def office(name: String): Unit = {
      println("第二步 "+name+" 您好!   您已毕业,赶紧领取高中毕业证把!")
      super.office(name)
    }

  }



  // 专科 Specialized subject
  trait  SpecializedSubject extends  interview{
    override def office(name: String): Unit = {
      println("第三步 "+name+" 您好!   您已经获得 专科毕业证,赶紧面试吧!")
      super.office(name)
    }
  }
  //专科毕业
  trait  SpecializedSubjectGraduation extends SpecializedSubject{
    override def office(name: String): Unit = {
      println("第二步 "+name+" 您好!   您已毕业,赶紧领取专科毕业证把!")
      super.office(name)
    }

  }



  // 本科   Undergraduate course

  trait  UndergraduateCourse extends  interview{
    override def office(name: String): Unit = {
      println("第三步 "+name+" 您好!   您已经获得 本科毕业证,赶紧面试吧!")
      super.office(name)
    }
  }
  // 本科毕业
  trait  UndergraduateCourseGraduation extends UndergraduateCourse{
    override def office(name: String): Unit = {
      println("第二步 "+name+" 您好!   您已毕业,赶紧领取本科毕业证把!")
      super.office(name)
    }
  }



  // 高中在读     HighSchoolReading
  class   HighSchoolReading extends   office with medical    with  interview  with  HighSchool    with HighGraduation    {
    def Reading(name:String): Unit ={
      println("第一步 "+name+"同学高中正在读。")
      super.office(name)
    }

  }


  // 专科在读     SpecializedSubjectReading
  class   SpecializedSubjectReading  extends  office with medical    with  interview with SpecializedSubject  with SpecializedSubjectGraduation{
    def Reading(name:String): Unit ={
      println("第一步 "+name+"同学专科正在读。")
      super.office(name)
    }
  }


  // 本科在读     UndergraduateCourseReading
  class   UndergraduateCourseReading extends  office with medical    with  interview with UndergraduateCourse with UndergraduateCourseGraduation{
    def Reading(name:String): Unit ={
      println("第一步 "+name+"同学本科正在读。")
      super.office(name)
    }
  }


  // 测试运行
  def main(args: Array[String]): Unit = {

    var zhangsan = new HighSchoolReading()
    zhangsan.Reading("张三")

    println("================================")

    var  lisi = new  SpecializedSubjectReading()
    lisi.Reading("李四")

    println("================================")

    var wangwu = new UndergraduateCourseReading()
    wangwu.Reading("王五")




  }

}

效果展示

发布了218 篇原创文章 · 获赞 291 · 访问量 29万+

猜你喜欢

转载自blog.csdn.net/bbvjx1314/article/details/105214140