Nói chung, luôn luôn dễ dàng để duy trì và mở rộng mã của bạn. Ngày mai bạn phát hiện ra rằng bạn không thích API đồ họa hiện đang sử dụng và muốn chuyển đổi. Bây giờ bạn sẽ phải trải qua tất cả các lớp đối tượng của mình và thay đổi mọi thứ, hay bạn vẫn chỉ cần thay đổi mã của mình trong một điểm trung tâm của dự án?
Nó phụ thuộc vào những gì đối tượng của bạn đang thực sự làm khi bạn gọi render (). Miễn là họ chỉ gọi các phương thức gọi xung quanh công cụ đồ họa của bạn, điều đó hoàn toàn tốt, vì logic <-> phân biệt đồ họa sẽ vẫn được đưa ra.
Ví dụ: nếu các phương thức render () của bạn về cơ bản là các phương thức tiện lợi và trông giống như thế này:
void MyClass::render(const Graphics &g)
{
g.draw(this);
}
hoặc là
void MyClass::render()
{
mySprite->render();
}
hoặc là
void MyClass::render()
{
mySprite->UseShader(thatshader);
mySprite->render();
}
hoặc gần như vậy, tôi không nghĩ đó là vấn đề gì.