06-12-14,07-1-29

来源:互联网 发布:淘宝网天猫帽子 编辑:程序博客网 时间:2024/05/17 08:51

// 06-12-14

关于对象的控制权限的问题。

  一个对象可以控制其他的对象,但是,有时候,这种控制权需要进行良好的设计。
  如果一个对象可以任意的驱动其他对象,那么,你的代码将很难维护。
  如果一个容器内的对象可以将主流程从这个容器转移到其他地方,那么,你的容器将会有莫名其妙的逻辑,因为他没有对流程的控制权。
  这个时候,容器内的对象就不能随意转移流程,转移流程的操作交给容纳他的容器来处理,这样容器将会有更好逻辑。

  〈07-2-13 比如一个状态控制着一个状态工厂,使用这个状态的类就会失去状态切换的控制,因为他没有状态工厂


//07-1-17

1 渲染器的接口
 
  渲染器不需要绘图的方法,只需要创建窗口,切换缓存,清除缓存之类,而绘制图片、点、矩形等的方法应该放在表面类中。
 
  这样就不用将渲染类直接交给其他需要显示的对象了,而只需要将后缓存所用的表面给他们使用,另外,所有的对象都画在一个表面上了,那么我们还可以灵活使用这个表面,对这个表面作些特殊处理,这带来了很大的灵活性。

2 字体
 
  字体类的字体绘制方法确实需要放在字体类中,因为绘制过程中必须要对字体的数据做特殊的处理,但是它的绘制目标和绘制所用的方法,都将来自表面类,也就是说,字体绘制的过程其实是在表面上作画。

3 工厂模式

  关于工厂类。创建表面,创建玩家角色,创建飞行道具等对象可以使用工厂模式。
  创建表面的工厂可以保存这个表面的引用方便再次创建和集中销毁,创建玩家角色和飞行道具的工厂可以在对象间通用一些数据,也可以使用池。

4 一般的接口问题

  在设计接口的时候,有些简单的方法,比如GET和SET类的方法,不要将方法所操作的数据放在接口里面,因为你的接口被别人实现的时候,别人可能已经通过各种途径有了具体的数据实体。

5 工厂模式续
 
  创建对象的对象工厂对象工厂是很有用的,它可以使得对象之间共享一些数据,而且可以使的对象的创建工作更加灵活。
 
  比如一个类 NPC, 游戏世界必然会有很多的这个类的对象,但是他们的图形或者碰撞数据
  都可以通用,这些通用的数据就是我以前说的静态数据,那么我们必须用一个代理对象来完成NPC对象的创建工作,这就需要Factory类,当你创建NPC的时候,它会把以前加载NPC用的通用数据给你,这样就可以节省空间。另外,工厂类还可以在内部使用对象池来存放对象,解决动态申请内存带来的效率问题。所以,这个模式是很有用的。

//07-1-19

  对于在程序开始时需要启动的模块,可以专门给他们写一个模块管理的类。
  这个类可以注册模块,然后只管启动和关闭。
  <07-2-23,有更好的设计,见07-2-3
 
//07-1-29

1 接口的设计
 
  接口里面的数据存取方法一般都很简单,如GET和SET类,我们如果将这些方法变成接口的话,会牺牲效率,但是如果是内联的话,必须将数据放在接口里面,这又有点不妥。
 
  一个折中的办法是GET和SET类方法是虚拟的,也就是说,子类可以使用接口里面的数据和对应的存取方法,也可以使用自己的数据,然后重载存取方法。
  〈07-2-13,这些都不是最重要的,最重要的我想你明白。