Advertisement
Guest User

Untitled

a guest
Nov 10th, 2014
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 1.84 KB | None | 0 0
  1. object Test extends App
  2. {
  3.   trait IRenderer
  4.   {
  5.     def renderResponse
  6.   }
  7.  
  8.   class Renderer(val response: GateResponse) extends IRenderer
  9.   {
  10.     def renderResponse = {
  11.       print(response)
  12.     }
  13.   }
  14.  
  15.   trait IRendererFactory
  16.   {
  17.     def createRenderer(response: GateResponse): IRenderer
  18.   }
  19.  
  20.   class CardRendererFactory extends IRendererFactory
  21.   {
  22.     def createRenderer(response: GateResponse): IRenderer = {
  23.       new Renderer(response)
  24.     }
  25.   }
  26.  
  27.   abstract class BaseParser(val rendererFactory: IRendererFactory)
  28.   {
  29.     def run() = {
  30.       val response = process()
  31.       renderResponse(response)
  32.     }
  33.  
  34.     protected def process(): GateResponse = {
  35.       val gateRequest = buildRequest()
  36.  
  37.       val response = checkBusinessRulesAndProcessRequest(gateRequest)
  38.       response
  39.     }
  40.  
  41.  
  42.     protected def buildRequest(): GateRequest
  43.  
  44.     private def renderResponse(response: GateResponse) = {
  45.       rendererFactory.createRenderer(response).renderResponse
  46.     }
  47.  
  48.     private def checkBusinessRulesAndProcessRequest(request: GateRequest) = {
  49.       val response = processRequest(request)
  50.       response
  51.     }
  52.  
  53.     private def processRequest(request: GateRequest): GateResponse = {
  54.       request.getResponse
  55.     }
  56.   }
  57.  
  58.   class CardParser(rendererFactory: IRendererFactory) extends BaseParser(rendererFactory: IRendererFactory)
  59.   {
  60.     override def process() = {
  61.       new CardResponse
  62.     }
  63.  
  64.     override protected def buildRequest() = {
  65.       new CardRequest()
  66.     }
  67.   }
  68.  
  69.  
  70.   class GateResponse
  71.   class CardResponse extends GateResponse
  72.  
  73.   abstract class GateRequest
  74.   {
  75.     def getResponse(): GateResponse
  76.   }
  77.   class CardRequest extends GateRequest
  78.   {
  79.     def getResponse() = {
  80.       new CardResponse()
  81.     }
  82.   }
  83.  
  84.  
  85.   val cardParser = new CardParser(new CardRendererFactory)
  86.   cardParser.run()
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement