Skip to content

Instantly share code, notes, and snippets.

View geraldcroes's full-sized avatar

Gérald Croës geraldcroes

  • TraefikLabs
  • France, Lyon
View GitHub Profile
@geraldcroes
geraldcroes / FileParserFactory.kt
Created December 9, 2017 16:54
Factory using the object keyword
object ObjectFileParserFactory : FileParserFactory {
override fun createFromFileName(fileName: String) =
when (fileName.substringAfterLast('.')) {
"xml" -> XmlFileParser()
"json" -> JsonFileParser()
else -> throw Exception("I don't know how to deal with $fileName.")
}
}
@geraldcroes
geraldcroes / FileParserFactory.kt
Last active December 9, 2017 16:53
CompanionObject with synonym for its instances
class CompanionObjectFileParserFactory : FileParserFactory {
companion object : FileParserFactory{
override fun createFromFileName(fileName: String) =
when (fileName.substringAfterLast('.')) {
"xml" -> XmlFileParser()
"json" -> JsonFileParser()
else -> throw Exception("I don't know how to deal with $fileName.")
}
}
/* needed if you want to be able to call the createFromFileName from an instance */
@geraldcroes
geraldcroes / client.kt
Created December 9, 2017 16:51
One line FileParserFactory
MyFileParserFactory.createFromFileName("filename.json")
@geraldcroes
geraldcroes / CompanionObjectParserFactory.kt
Created December 9, 2017 16:50
CompanionObject in the FileParserFactory
class CompanionObjectFileParserFactory {
companion object : FileParserFactory{
override fun createFromFileName(fileName: String) =
when (fileName.substringAfterLast('.')) {
"xml" -> XmlFileParser()
"json" -> JsonFileParser()
else -> throw Exception("I don't know how to deal with $fileName.")
}
}
}
@geraldcroes
geraldcroes / client.kt
Created December 9, 2017 16:49
FileParserFactory usage
val parserFactory = StandardFileParserFactory()
val fileParser = parserFactory.createFromFileName(“filename.xml”)
@geraldcroes
geraldcroes / FileParserFactory.kt
Created December 9, 2017 16:48
StandardFileParserFactory
/* The concept of the factory -> creates a Product */
interface FileParserFactory {
fun createFromFileName(fileName: String): FileParser
}
/* Our specific Factory */
class StandardFileParserFactory : FileParserFactory {
override fun createFromFileName(fileName: String) =
when (fileName.substringAfterLast('.')) {
"xml" -> XmlFileParser()
@geraldcroes
geraldcroes / FileParsers.kt
Created December 9, 2017 16:47
FileParser implementations
class XmlFileParser : FileParser
class JsonFileParser : FileParser
@geraldcroes
geraldcroes / FileParser.kt
Created December 9, 2017 16:46
FileParser interface
interface FileParser
@geraldcroes
geraldcroes / sent.json
Last active December 3, 2017 11:33
REST 101 - PATCH
{
"time": "9:30pm"
}
@geraldcroes
geraldcroes / sent.json
Created December 3, 2017 11:31
REST 101 - Update a record
{
"client_id": "my-id",
"date": "2018–12–12",
"time": "9:00pm",
"number_of_guests": 2
}