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

邯郸做网站外包网站建设比较好的多少钱

邯郸做网站外包,网站建设比较好的多少钱,免费建站网站一级大录像不卡,免费学习的网站平台抽象工厂 一、解决的问题 抽象工厂模式主要解决了在具有多个产品族的情况下#xff0c;如何统一管理创建相关产品对象的问题。 当系统需要创建一系列相互关联或相互依赖的对象#xff0c;并且这些对象可以形成多个不同的产品族时#xff0c;如果直接由客户端去分别创建这…抽象工厂 一、解决的问题 抽象工厂模式主要解决了在具有多个产品族的情况下如何统一管理创建相关产品对象的问题。 当系统需要创建一系列相互关联或相互依赖的对象并且这些对象可以形成多个不同的产品族时如果直接由客户端去分别创建这些对象会导致客户端与具体的产品类紧密耦合并且当需要切换产品族时修改的成本会很高。 例如一个图形用户界面GUI应用可能需要为不同的操作系统如 Windows、Mac、Linux创建各自风格的按钮、文本框等组件。如果没有抽象工厂模式客户端代码需要了解每个具体操作系统的组件实现细节并且在需要切换操作系统支持时大量的代码都需要修改。 二、好处 解耦了客户端与具体产品类 客户端只需要与抽象工厂和抽象产品交互无需关心具体产品对象的创建细节和具体类降低了客户端与具体产品类之间的耦合度。 便于产品族切换 通过切换使用不同的具体工厂可以轻松地在不同的产品族之间进行切换而无需修改客户端的调用代码。 统一的产品创建逻辑 将创建相关产品对象的逻辑集中在工厂类中便于对产品的创建进行统一管理和维护。 三、坏处 扩展新的产品族困难 当需要增加一个新的产品族时需要修改抽象工厂接口以及所有的具体工厂实现类违背了“开闭原则”对扩展开放对修改关闭可能会影响到已有的代码。 代码结构复杂 抽象工厂模式增加了系统中类的数量和层次结构使得代码结构相对复杂对于简单的应用场景可能会导致过度设计。 文章目录 抽象工厂一、抽象工厂模式介绍二、Java 代码示例 一、抽象工厂模式介绍 抽象工厂模式Abstract Factory Pattern属于创建型设计模式。它提供了一个创建一系列相关或相互依赖对象的接口而无需指定它们具体的类。 抽象工厂模式的主要优点是易于交换产品系列由于具体工厂类在一个应用中只需要在初始化的时候出现一次这使得改变一个应用的具体工厂变得非常容易它让具体的创建实例过程与客户端分离客户端是通过抽象工厂和抽象产品来操纵实例产品的具体类名也被具体工厂的实现分离不会出现在客户代码中。 抽象工厂模式的缺点是如果要增加新的产品系列需要修改抽象工厂和所有的具体工厂类这违背了“开闭原则”。 二、Java 代码示例 以下是一个使用 Java 实现的抽象工厂模式的示例假设我们有两个产品系列Windows 系列的窗口组件按钮和文本框和 Mac 系列的窗口组件 // 按钮接口 interface Button {void paint(); }// Windows 风格的按钮 class WindowsButton implements Button {Overridepublic void paint() {System.out.println(Painting Windows Button);} }// Mac 风格的按钮 class MacButton implements Button {Overridepublic void paint() {System.out.println(Painting Mac Button);} }// 文本框接口 interface TextBox {void show(); }// Windows 风格的文本框 class WindowsTextBox implements TextBox {Overridepublic void show() {System.out.println(Showing Windows TextBox);} }// Mac 风格的文本框 class MacTextBox implements TextBox {Overridepublic void show() {System.out.println(Showing Mac TextBox);} }// 抽象工厂接口 interface GUIFactory {Button createButton();TextBox createTextBox(); }// Windows 风格的工厂用于创建 Windows 风格的组件 class WindowsFactory implements GUIFactory {Overridepublic Button createButton() {return new WindowsButton();}Overridepublic TextBox createTextBox() {return new WindowsTextBox();} }// Mac 风格的工厂用于创建 Mac 风格的组件 class MacFactory implements GUIFactory {Overridepublic Button createButton() {return new MacButton();}Overridepublic TextBox createTextBox() {return new MacTextBox();} }// 客户端代码 public class AbstractFactoryPatternDemo {public static void main(String[] args) {GUIFactory factory;// 创建 Windows 风格的工厂factory new WindowsFactory();Button windowsButton factory.createButton();TextBox windowsTextBox factory.createTextBox();windowsButton.paint();windowsTextBox.show();// 创建 Mac 风格的工厂factory new MacFactory();Button macButton factory.createButton();TextBox macTextBox factory.createTextBox();macButton.paint();macTextBox.show();} }
http://www.hkea.cn/news/14579586/

相关文章:

  • 叫任何一个人一个小时做网站乐从网站开发
  • 青岛行业网站建设电话眼镜网站模板
  • 南宁市做公司网站网上接网站做
  • wordpress 账号插件专业网站优化
  • 国外可以做推广的网站吗网站icp备案证明
  • 公司网站没备案企业网站百度收录
  • 企业网站源码带支付域名注册网站查询工具
  • 怎么找到网站后台农村基本制度建设网站
  • 重庆网站建设选卓光介绍好的免费网站模板下载地址
  • 虚拟主机怎么设计网站吗单位做网站怎么做
  • 在线代理网页浏览网站创保网
  • 广州做营销网站公司外贸网站源代码下载
  • 免费空间做网站wordpress手机上图片不显示
  • 鄠邑区建设局网站深圳商业策划公司十大公司
  • 无法打开建行网站爱站网关键词搜索
  • 智能建站系统官网关键词优化排名首页
  • 南平 建网站济南建设工程业绩公示的网站
  • 怎么查网站有没有做301网站域名云服务器是什么
  • 深圳坪山站查询网站ftp地址
  • 360免费自助建站著名logo设计案例
  • 创意网站模板下载免费建博客网站
  • 网站给挂黑链学校校园网站
  • c#做asp.net网站wordpress如何开启gzip
  • 阿里云win服务器怎么做网站新手做网站教程
  • 世纪兴网站建设wordpress无法选择数据库
  • 沈阳网站模板建站网站策划主要工作是什么
  • 自己建立网站多少钱网站开发项目报告书
  • 商城网站建设大连flash个人网站源码
  • 建设银行儿童网站广州市医院网站建设哪家好
  • asp 网站 模板网页设计视频网站