当前位置: 首页 > news >正文

网站建设全部代码pc端和移动端的网站区别是什么

网站建设全部代码,pc端和移动端的网站区别是什么,游戏开发公司哪家好,开发app教程1. 简介 抽象工厂模式属于创建型模型,作用就是创建一系列相关对象,而无需知道这些对象的具体类。当系统需要独立于其对象的创建方式时,就会使用这种设计模式。 2.适用场景 在以下场景中使用抽象工厂模式是比较合适的。 ​​存在一系列相关产品…

1. 简介

抽象工厂模式属于创建型模型,作用就是创建一系列相关对象,而无需知道这些对象的具体类。当系统需要独立于其对象的创建方式时,就会使用这种设计模式。

2.适用场景

在以下场景中使用抽象工厂模式是比较合适的。

  1. ​存在一系列相关产品时​

当系统中有多个“产品族”,而每个族里又包含多个“产品”。假设现在给哈基米一个需求让他开发一个跨平台应用,要求为不同操作系统提供一整套UI组件,包括按钮、输入框、下拉框等。Windows 和 macOS 是两个“产品族”,而按钮和复选框就是“产品”。抽象工厂可以帮哈基米一次性创建一个“Windows风格”的按钮和复选框,或者创建一套“Mac风格”的组件。

  1. ​需要确保产品间的一致性时​

需要保证创建的产品是彼此兼容的、一致性强。刚入行的哈基米混用了不同平台的UI组件,用 Windows 的按钮配 Mac 的复选框,导致了界面风格不统一,甚至功能出错。抽象工厂模式可以确保在同一时间内只用同一系列的产品,避免混搭问题。

  1. ​需要轻松切换不同产品系列时​

想在不修改代码的前提下,切换不同的产品系列。爱玩游戏的哈基米们都知道当玩家选择不同的种族角色(人族、兽族、精灵族),游戏就要加载不同的角色外观与技能。通过抽象工厂,只需更换工厂类即可生成另一套角色,而不需要动核心逻辑。

  1. ​希望将客户端代码与具体实现解耦时​

让客户端代码只依赖接口,而不是具体类。客户端只需要知道“哈基米需要一个战士角色”,不需要关心“这个战士是人族的还是兽族的、是用什么方式实现的”。这使得代码更灵活、更容易扩展,也有利于后期维护。

真实应用案例:

  • 跨平台UI框架:JavaFX/Swing/Android等框架内部采用抽象工厂模式,实现不同设备间的差异化UI渲染逻辑。
  • 应用主题管理系统:深色模式/浅色模式/高对比度模式等主题切换场景,可通过该模式优雅封装主题相关组件。
  • 插件化架构实现:开发IDE或插件系统时,各插件的UI渲染/文件存储等差异化实现,通过该模式可实现无缝切换。
  • 游戏角色装备系统:管理骑士/法师/弓箭手等不同角色对应的武器与防具组合时,该模式能有效维护装备一致性。

3. 核心组件

以下5个组件是掌握抽象模式的基础,建议哈基米们反复背诵。

  1. ​抽象工厂(Abstract Factory)​​:声明每种产品类型的创建方法
  2. ​具体工厂(Concrete Factory)​​:实现创建方法,返回产品变体
  3. ​抽象产品(Abstract Product)​​:声明产品类型的接口
  4. ​具体产品(Concrete Product)​​:实现产品接口
  5. ​客户端(Client)​​:使用抽象工厂创建产品

下面通过一个游戏中不同阵营(如人族、兽族)下的角色创建(战士和法师)的例子来说明使用抽象工厂模式的5步大法

Step1: 抽象产品(角色接口)
public interface Warrior {  void attack();  
}  public interface Mage {  void castSpell();  
}
Step2: 具体产品(不同阵营的角色)
public class HumanWarrior implements Warrior {  public void attack() {  System.out.println("Human Warrior slashes with a sword!");  }  
}  public class OrcWarrior implements Warrior {  public void attack() {  System.out.println("Orc Warrior smashes with an axe!");  }  
}  public class HumanMage implements Mage {  public void castSpell() {  System.out.println("Human Mage casts a fireball!");  }  
}  public class OrcMage implements Mage {  public void castSpell() {  System.out.println("Orc Mage conjures a shadow bolt!");  }  
}
Step3: 抽象工厂(角色工厂接口)
public interface CharacterFactory {  Warrior createWarrior();  Mage createMage();  
}
Step4: 具体工厂(阵营实现)
public class HumanFactory implements CharacterFactory {  public Warrior createWarrior() {  return new HumanWarrior();  }  public Mage createMage() {  return new HumanMage();  }  
}  public class OrcFactory implements CharacterFactory {  public Warrior createWarrior() {  return new OrcWarrior();  }  public Mage createMage() {  return new OrcMage();  }  
}
Step5: 客户端(游戏应用)
public class GameApp {  private Warrior warrior;  private Mage mage;  public GameApp(CharacterFactory factory) {  warrior = factory.createWarrior();  mage = factory.createMage();  }  public void play() {  warrior.attack();  mage.castSpell();  }  
}
运行示例(Demo)
public class Demo {  public static void main(String[] args) {  CharacterFactory factory;  // 假设此处是用户选择的阵营 String faction = "orc";  if (faction.equalsIgnoreCase("human")) {  factory = new HumanFactory();  } else {  factory = new OrcFactory();  }  GameApp gameApp = new GameApp(factory);  gameApp.play();  }  
}

4. 优点

  1. 扩展性好(不影响既有代码)
    新增产品族只需实现新的具体工厂及相关产品,客户端代码完全无需改动。

    示例:在刚才的组件案例中,Leader给哈基米提了一个需求——需要支持Linux系统主题,哈基米学完上述知识点后知道了仅需实现LinuxFactory、LinuxButton和LinuxCheckbox就可以完成需求了。

  2. 清晰的代码隔离
    所有创建逻辑封装在工厂中,避免了业务逻辑中混杂if-else或switch语句。精简的客户端代码意味着缺陷更少并且更易维护。

  3. 关联对象的一致性保证
    抽象工厂确保相关组件始终保持配套关系。(彻底杜绝深色模式按钮与浅色模式复选框的错误组合。)

  4. 灵活的测试与模拟
    单元测试中可轻松模拟不同工厂,提升代码可测试性。

  5. 符合开闭原则
    系统对扩展开放,对修改封闭。新类型的产品可以很方便的扩展进来,同时保证不触及既有代码。

5. 注意事项

  1. 设计过度问题
    当系统仅需创建1-2个对象时采用此模式属于过度设计,此时应改用更简单的工厂方法模式。

  2. 工厂耦合问题
    错误示范 :在客户端硬编码具体工厂(如new WindowsFactory())会破坏模式初衷。
    正确做法:通过依赖注入或配置方式解耦。

  3. 产品族混用问题
    在同一工厂中返回Windows按钮和Mac复选框将彻底破坏模式的设计价值,必须确保同一工厂只生产配套产品。

http://www.dtcms.com/a/408924.html

相关文章:

  • 无锡门户网站制作电话wordpress 执行sql
  • 衡阳公司网站建设无锡网站的优化
  • 网站建设维护的知识什么是网络营销举例子
  • 外国有没有中国代做数学作业的网站淘宝网站运营的工作怎么做
  • 模板网站和定公司企业网站建设需要哪些
  • 网站建设中 html5 模板下载网页版梦幻西游虎灯令
  • 辽宁建设工程信息网站软件开发和网站开发有何不同
  • 东莞企石做网站python做网站入门
  • 杭州企业推广网站国外网站如何建设
  • 佛山网站页面优化WordPress论坛用哪些
  • 如何通过psd做网站网站编程源码免费
  • 万网如何建网站百度官方网页
  • PHP网站建设的基本流程免费网站制作报价
  • go语言 网站开发网站首页图片尺寸
  • 网站开发环境搭建章节教材书贵阳网站开发方舟网络
  • 专业网站建设设计网站建设制作有那些
  • 网站设计制作什么时候好品牌微信网站定制
  • 网站反向链接公司网站开发的核心技术
  • 网站页面设计服务响应式模板网站建设哪家好
  • 网站后台编辑器企业网站seo维护
  • 医疗网站备案抖音关键词搜索指数
  • 百度手机模板网站图片做网站连接
  • 自己做的网站打不开了windows7优化大师下载
  • 阿里巴巴的网站建设分销系统什么意思
  • 成都建设网站费用自建设网站
  • 网站管理建设电子商务网站推广方法和技巧
  • 服装网站建设优点有哪些wordpress 首页调用最新文章
  • 一流的营销型网站建设如何做好企业网站
  • 我要做个网站网站模板紫色
  • 网站建设会出现哪些问题绍兴网站建设公司