मैं एक खेल विकसित कर रहा हूँ! स्लैक 2.0 के साथ स्कैला में 2.2 एप्लिकेशन और अब मैं केक पैटर्न का उपयोग करने की कोशिश कर रहा हूं, डेटा एक्सेस पहलू से निपट रहा हूं। यह आशाजनक प्रतीत होता है लेकिन मुझे वास्तव में ऐसा लगता है कि मुझे वास्तव में कुछ सरल प्राप्त करने के लिए कक्षाओं/गुणों/वस्तुओं का एक बड़ा समूह लिखना होगा। तो मैं इस पर कुछ प्रकाश का उपयोग कर सकता था।स्कैला स्लिम केक पैटर्न: 9 000 से अधिक कक्षाएं?
एक User
अवधारणा के साथ एक बहुत ही सरल उदाहरण लें तो जिस तरह से मैं समझता हूँ कि यह है कि हम होना चाहिए:
case class User(...) //model
class Users extends Table[User]... //Slick Table
object users extends TableQuery[Users] { //Slick Query
//custom queries
}
अब तक यह पूरी तरह से उचित है। अब हम एक "केक Patternable" UserRepository
जोड़ें:
trait UserRepository {
val userRepo: UserRepository
class UserRepositoryImpl {
//Here I can do some stuff with slick
def findByName(name: String) = {
users.withFilter(_.name === name).list
}
}
}
फिर हम एक UserService
:
trait UserService {
this: UserRepository =>
val userService: UserService
class UserServiceImpl { //
def findByName(name: String) = {
userRepo.findByName(name)
}
}
}
अब हम एक वस्तु में इस सब के मिश्रण:
object UserModule extends UserService with UserRepository {
val userRepo = new UserRepositoryImpl
val userService = new UserServiceImpl
}
UserRepository
वास्तव में उपयोगी है? मैंUsers
स्लिम ऑब्जेक्ट में कस्टम क्वेरी के रूप मेंfindByName
लिख सकता था।मान लें कि मेरे पास
Customer
के लिए इस तरह के वर्गों का एक और सेट है, और मुझे इसमें कुछUserService
सुविधाएं उपयोग करने की आवश्यकता है।
मुझे क्या करना चाहिए:
CustomerService {
this: UserService =>
...
}
या
CustomerService {
val userService = UserModule.userService
...
}
9000 से कहां से मिला? – Blankman
@ ब्लैंकमैन http://knowyourmeme.com/memes/its-over-9000 – user1498572