这样的设计合理么解决办法
这样的设计合理么
假如有一个Light类
class CLight
{
};
按照常理,当我们向场景中添加一盏灯时会这样做
CLight *pLight1 = new CLight;
再添加一盏灯时
CLight *pLight2 = new CLight;
但是目前项目却被设计成了
class CLight
{
public:
void AddLight();
};
当我们向场景中添加一盏灯时会这样做
CLight *pLight1 = new CLight;
pLight-> AddLight();
再添加一盏灯时
pLight-> AddLight();
有什么好处?
------解决方案--------------------
这样addlight,light类内部肯定要有一个维护链表吧,不然就丧失对这些小light的控制了..
类的对象数目少了,就一个.但并不会减少所耗的内存.而且链表的代码也不方便写.
按照前者做法就是外部自己管理这些CLight 对象...
我觉得个人觉得很无所谓的..因为openGL和directX场景里灯的个数都是不多的..
又不是百八十个灯,所以无所谓效率问题.至于合理,因为个数很少,再怎么不合理,也很清晰,合理也谈不上.. 这类问题不去计较吧.项目团结一致向前让客户满意是最大的目标..
------解决方案--------------------
因为每次创建一个对象都执行构建函数,如果用指针的话就只执行一次,可以节省时间 。
而且如果要创建多个对像的话,第二种也麻烦,
------解决方案--------------------
没有最合理,只有更合理.
------解决方案--------------------
哪一种都可以,统一就好。
字体、灯光最好也一样
将来易于维护
模板化
假如有一个Light类
class CLight
{
};
按照常理,当我们向场景中添加一盏灯时会这样做
CLight *pLight1 = new CLight;
再添加一盏灯时
CLight *pLight2 = new CLight;
但是目前项目却被设计成了
class CLight
{
public:
void AddLight();
};
当我们向场景中添加一盏灯时会这样做
CLight *pLight1 = new CLight;
pLight-> AddLight();
再添加一盏灯时
pLight-> AddLight();
有什么好处?
------解决方案--------------------
这样addlight,light类内部肯定要有一个维护链表吧,不然就丧失对这些小light的控制了..
类的对象数目少了,就一个.但并不会减少所耗的内存.而且链表的代码也不方便写.
按照前者做法就是外部自己管理这些CLight 对象...
我觉得个人觉得很无所谓的..因为openGL和directX场景里灯的个数都是不多的..
又不是百八十个灯,所以无所谓效率问题.至于合理,因为个数很少,再怎么不合理,也很清晰,合理也谈不上.. 这类问题不去计较吧.项目团结一致向前让客户满意是最大的目标..
------解决方案--------------------
因为每次创建一个对象都执行构建函数,如果用指针的话就只执行一次,可以节省时间 。
而且如果要创建多个对像的话,第二种也麻烦,
------解决方案--------------------
没有最合理,只有更合理.
------解决方案--------------------
哪一种都可以,统一就好。
字体、灯光最好也一样
将来易于维护
模板化