सामान्य तौर पर यह हमेशा आपके कोड को बनाए रखने और विस्तारित करने के लिए कितना आसान है। कल आपको पता चलता है कि आप वर्तमान में उपयोग किए जा रहे ग्राफिक्स एपीआई को पसंद नहीं करते हैं, और स्विच करना चाहते हैं। क्या अब आपको अपनी सभी ऑब्जेक्ट कक्षाओं में जाना होगा और सब कुछ बदलना होगा, या क्या आपको अभी भी प्रोजेक्ट के एक केंद्रीय बिंदु में अपना कोड बदलने की आवश्यकता है?
यह निर्भर करता है कि जब आप रेंडर () कहते हैं तो आपकी वस्तुएं वास्तव में क्या कर रही हैं। जब तक वे सिर्फ आपके ग्राफिक्स इंजन के चारों ओर विधि कॉल लपेटते हैं, यह पूरी तरह से ठीक है, क्योंकि लॉज <-> ग्राफिक्स अंतर अभी भी दिया जाएगा।
उदाहरण के लिए, यदि आपके रेंडर () विधियां मूल रूप से सुविधा-विधियां हैं और कुछ इस तरह दिखती हैं:
void MyClass::render(const Graphics &g)
{
g.draw(this);
}
या
void MyClass::render()
{
mySprite->render();
}
या
void MyClass::render()
{
mySprite->UseShader(thatshader);
mySprite->render();
}
या उसके करीब, मुझे नहीं लगता कि यह कोई समस्या है।