重构。
设计了抽象基类Player。
服务端与客户端分别继承并实现为SPlayer和CPlayer。
增加了代码复用度，减少了冗余。