从王者荣耀看设计模式(抽象工厂模式)

一.简介
王者荣耀是一款流行的大众手机竞技游戏,目前已经来到了第18个赛季!支持在多种操作平台上运行是王者荣耀如此火爆的原因之一。玩家不仅能通过Andriod手机登陆游戏并且操作游戏,还能在IOS手机上登陆、操作游戏
模式动机
抽象工厂模式是工厂方法模式的泛化版,工厂方法模式是一种特殊的抽象工厂模式。在工厂方法模式中,每一个具体工厂只能生产一种具体产品,而在抽象工厂方法模式中,每一个具体工厂可以生产多个具体产品。在本实例中,苹果工厂生产的产品支持登陆和操作IOS游戏。Andriod工厂生产的产品支持登陆和操作Andriod游戏
二.产品等级结构与产品族
抽象工厂模式是工厂模式的泛化版,工厂方法模式是一种特殊的抽象工厂模式。在工厂方法模式中,每一个具体工厂只能生成一种具体产品,而在抽象工厂模式中,每一个具体工厂可以生产多个具体产品。为了清晰地理解抽象工厂模式,需要首先明确两个概念:
1. 产品等级结构(一类):产品等级结构即产品的继承结构,如一个抽象类是电视机,其子类有海尔电视机、海信电视机、TCl电视机,则抽象电视机与具体电视机之间构成产品等级结构,抽象电视机是父类,而具体品牌的电视机是子类。
2. 产品族(一族):在抽象工厂模式中,产品族是指由同一工厂生产的,位于不同产品等级结构中的一组产品,如海尔工厂生产的海尔电视机、海尔电冰箱,海尔电视机位于电视机产品等级结构中,海尔电冰箱位于电冰箱产品等级结构中

当抽象工厂模式中每一个具体类只创建一个产品对象,也就是只存在一个产品等级结构时,抽象工厂模式退化成工厂方法模式;当工厂方法模式中抽象方法与具体工厂合并,提供一个统一的工厂来创建产品对象,并将创建对象的工厂方法设计为静态方法时,工厂方法模式退化为简单工厂模式
三.抽象工厂模式
抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定他们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式
-
抽象工厂模式应用场景
在一下情况下可以使用抽象工厂模式
⑴. 一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有类型的工厂模式都是重要的。用户无需关心对象的创建过程,将对象的创建和使用解耦。
⑵. 系统中有多于一个的产品族,而每次只使用其中某一产品族。可以通过配置文件等方式来使得用户可以动态改变产品族,也可以很方便地增加产品族。
⑶. 属于同一产品族的产品将在一起使用,这一约束必须在系统的设计中体现出来,同一产品族的产品可以是没有任何关系的对象,但是它们都具有一些共同的约束。
⑷.

本文通过王者荣耀的例子探讨抽象工厂模式,解释如何使用该模式来支持不同操作系统的游戏登录和操作。在抽象工厂模式中,每个具体工厂能创建多个产品族,比如Android和iOS的登录及游戏玩法。当需要支持新的操作系统时,只需添加新的具体工厂,符合开闭原则。然而,扩展抽象工厂以生产新产品类型时,可能需要修改已有代码,存在一定的局限性。博客提供了代码实现和运行结果,展示了抽象工厂模式在实际问题中的应用。
最低0.47元/天 解锁文章
508

被折叠的 条评论
为什么被折叠?



