类图设计
工厂模式
在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
缺点就是每创建一个新的产品就需要创建一个新的工厂实例,会增加系统的复杂性。由于飞碟游戏中只有生产飞碟一个工厂,所以这里使用单实例工厂模式就够了。但是如果还需要其他的产品的话(鸟,飞机等),就需要多个工厂。
一个具体的工厂通常是一个单例(Singleton).
抽象工厂模式(创建型模式)
意图
提供一个接口以创建一系列相关或者依赖的对象,而无须指定它们具体的类
适用性
- 一个系统要独立于它的产品的创建,组合和表示
- 一个系统要由多个产品系列的一个来配置
- 要强调一系列相关的产品对象设计以便进行联合使用
- 只想显示接口而不是实现
协作
- 通常在运行时创建一个工厂类的实例,这一实例创建具有特定实现的产品对象,如果要创建的产品对象不同,则应该使用不同的具体工厂.
- 抽象工厂将产品对象的创建延迟到它的ConcreteFactory子类
适配器模式(结构型模式)
适配器使得一个接口与其他接口兼容,从而给出多个不同接口的统一抽象。负责加入独立的或不兼容的接口功能.
意图
将一个类的接口转换成客户希望的另一个接口,Adapter模式使得原本由于接口不兼容而不能用一起工作的那些类可以一起工作. 在本项目中,一个场记只能有一个运动管理器,那么具体是由物理模块来控制呢,还是由动作SSActionManager模块来控制呢?那根据需求,我们需要做一个IActionManager作为适配器接口来兼容两种运动管理器
适用性
- 想使用一个已经存在的类,而它的接口不符合目前需求
- 先创建一个可以复用的类,可以与其他不相关的类或者接口不一定兼容的类协同工作
- 想使用一些已经存在的子类,但不可能对每一个进行子类化以匹配它们的接口。
|