के साथ बेहतर डेटा एक्सेस लेयर कैसे लिखें I कुछ छोटी परियोजनाओं में रियलम का उपयोग कर रहा हूं और मुझे यह पसंद है। मैं बड़ी परियोजनाओं में इसका उपयोग करने के लिए आगे बढ़ने की उम्मीद कर रहा हूं और मैं अपनी डेटा एक्सेस लेयर की बेहतर संरचना की तलाश में हूं।रीयल
मैं इसी तरह के question पर आया और मैंने वहां मिली जानकारी पर निर्माण करने की कोशिश की। चर्चा की गई दृष्टिकोण डीएओ पैटर्न है इसलिए मैंने उस पर एक शॉट दिया।
यह मेरी मॉडल कक्षा है।
class Chat: Object {
dynamic var id: String = ""
dynamic var createdAt: Date = Date()
dynamic var creatorId: String = ""
dynamic var title: String?
let chatMessages = List<ChatMessage>()
override static func primaryKey() -> String? {
return "id"
}
convenience init(fromJSON json: JSON) {
self.init()
// ...
}
}
तो मैं एक ChatDAOProtocol
बनाई गई सभी सुविधा सहायक तरीकों धारण करने के लिए।
protocol ChatDAOProtocol {
func addMessage(_ message: ChatMessage)
func getChatThumbnail() -> UIImage
func getParticipants(includingMe: Bool) -> [Participant]?
static func getChat(fromId id: String) -> Chat?
static func getChat(fromCreatorId id: String) -> Chat?
}
अन्त में मैं एक वर्ग ChatHelper
कहा जाता है कि उन सभी प्रोटोकॉल तरीकों को लागू किया बनाया।
class ChatHelper: ChatDAOProtocol {
func addMessage(_ message: ChatMessage) {
}
func getChatThumbnail() -> UIImage {
return UIImage()
}
func getParticipants(includingMe: Bool) -> [Participant]? {
return nil
}
static func getChat(fromId id: String) -> Chat? {
return nil
}
static func getChat(fromCreatorId id: String) -> Chat? {
return nil
}
}
यह पहले से ही सभी वीसी और सामान के सभी डेटाबेस संबंधित कोड छिड़काव से बेहतर लगता है। लेकिन मुझे अभी भी कुछ संदेह हैं।
उदाहरण के लिए, कहें कि मुझे चैट के सभी प्रतिभागियों को प्राप्त करने की आवश्यकता है, अब मुझे ChatHelper
कक्षा पर विधि को कॉल करना होगा। और अगर मैं बस चैट शीर्षक प्राप्त करना चाहता हूं, तो मैं Chat
ऑब्जेक्ट की title
संपत्ति को कॉल करता हूं। एक बहुत एकीकृत इंटरफेस की तरह प्रतीत नहीं होता है। क्या मुझे सहायक में सभी संपत्तियों के लिए गेटर्स और सेटर्स भी शामिल करना चाहिए। तो Chat
ऑब्जेक्ट को कभी भी सीधे नहीं कहा जाता है (शायद एक उदाहरण बनाने के अलावा)।
या
मैं Chat
वस्तु ही ChatDAOProtocol
प्रोटोकॉल के अनुरूप बना दें? तो सभी सुविधा विधियों के साथ-साथ गुण सीधे Chat
ऑब्जेक्ट से सीधे पहुंच योग्य हैं?
या इनमें से दोनों की तुलना में बेहतर तरीका है?
उत्तर के लिए धन्यवाद। मैं उन बिंदुओं को लेता हूं जिनका आपने उल्लेख किया है और मेरे कोड को फिर से काम करते हैं। तो क्या आपको लगता है कि एक ही 'चैट' कक्षा में सहायक तरीके से बेहतर है या उन सहायक तरीकों के लिए अलग 'चैटहेल्पर' वर्ग बनाना बेहतर है? – Isuru