Panorama类的PanoramaViewOver实例创建方案:外部Creator类vs内部方法孰优?
两种PanoramaViewOver创建方案的优劣分析
现有主类Panorama通过组合包含PanoramaViewOver组件,代码定义如下:
class Panorama { panoramaViewOver: PanoramaViewOver | null; }
针对PanoramaViewOver实例的创建与关联,存在两种方案,具体分析如下:
方案一:外部Creator类负责创建与关联
代码实现:
class Creator { panorama: Panorama; createPanorama() { this.panorama = new Panorama(); } createPanoramaViewOver() { const view = new PanoramaViewOver(); if(this.panorama) this.panorama.view = view; } }
核心优势:
- 符合单一职责原则:
Panorama只专注自身核心业务逻辑,子组件的创建与关联逻辑完全交由Creator负责,职责划分清晰,类的边界明确。 - 降低耦合度:
Panorama与PanoramaViewOver的依赖关系由外部类管理,两者耦合性极低。后续若PanoramaViewOver的构造方式变更、或需要替换为其他同类组件,仅需修改Creator代码,不会影响Panorama的核心逻辑。 - 扩展性更强:如果后续需要给
Panorama新增更多子组件,只需在Creator中添加对应的创建方法即可,不会导致Panorama类臃肿不堪。
方案二:Panorama内部添加创建方法
核心问题:
- 违反单一职责:
Panorama既要维护自身核心功能,又要负责子组件的创建,职责混杂,会导致类的代码量持续膨胀,后续维护成本陡增。 - 耦合度过高:
Panorama直接绑定PanoramaViewOver的创建细节,一旦PanoramaViewOver的构造逻辑变化,必须修改Panorama类,违背开闭原则。 - 扩展性差:若后续需要添加更多子组件,
Panorama会不断新增创建方法,逐渐演变成“大杂烩”类,难以维护和迭代。
结论
方案一更优,它通过分离对象创建与核心业务逻辑,保证了代码的高内聚低耦合,后续的维护和扩展都更便捷。
内容的提问来源于stack exchange,提问作者Jessy
相关产品推荐
相关产品推荐

