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

制作网站首先要知道什么创业做网站APP开发

制作网站首先要知道什么,创业做网站APP开发,吉浦网站建设,自己建网站怎么做影视资源本文内容参考: 软考 系统架构设计师系列知识点之设计模式(2)_系统架构设计师中考设计模式吗-CSDN博客 https://baike.baidu.com/item/%E6%8A%BD%E8%B1%A1%E5%B7%A5%E5%8E%82%E6%A8%A1%E5%BC%8F/2361182 特此致谢! Abstract Fac…

本文内容参考:

软考 系统架构设计师系列知识点之设计模式(2)_系统架构设计师中考设计模式吗-CSDN博客

https://baike.baidu.com/item/%E6%8A%BD%E8%B1%A1%E5%B7%A5%E5%8E%82%E6%A8%A1%E5%BC%8F/2361182

特此致谢!

 

Abstract Factory(抽象工厂)模式

1. 概述

抽象工厂模式(Abstract Factory Pattern)是一种常见的设计模式,隶属于设计模式中的创建型模式,用于产品族的构建。

抽象工厂是所有形态的工厂模式中最为抽象和最具一般性的一种形态。此模式为一个产品家族提供了统一的创建接口。当需要这个产品家族的某一系列的时候,可以从抽象工厂中选出相对系的系列来创建一个具体的工厂类别。

抽象工厂是指当有多个抽象角色时使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体情况下,创建多个产品族中的产品对象。

工厂模式中的每一个形态都是针对一定问题的解决方案,工厂方法针对的是多个产品系列结构;而抽象工厂模式针对的是多个产品族结构一个产品族内有多个产品系列

2. 实现原理

抽象工厂模式相对于工厂方法模式来说,就是工厂方法模式是针对一个产品系列的,而抽象工厂模式是针对多个产品系列的,即工厂方法模式是一个产品系列一个工厂类,而抽象工厂模式是多个产品系列一个工厂类在抽象工厂模式中,客户端不再负责对象的创建,而是把这个责任丢给了具体的工厂类,客户端只负责对对象的调用,从而明确了各个类的职责。并且当一系列相互关联的产品被设计到一个工厂类里后,客户端的调用将会变得非常简单,而且,如果要更换这一系列的产品,则只需要更换一个工厂类即可。

如果客户端需要创建一些产品结构,而这些产品结构又分别属于不同的产品类别,则可以使用抽象工厂模式。抽象工厂模式中抽象工厂类负责定义创建对象的接口,具体这一系列对象的创建工作由实现抽象工厂的具体工厂类来完成。

3. 角色

抽象工厂模式中存在四种角色,分别是:抽象工厂角色(AbsractFactory),具体工厂角色(ConcereteFactory),抽象产品角色(AbstractProduct),具体产品角色(ConcreteProduct)。

  • 抽象工厂角色

担任这个角色的是工厂方法模式的核心,它是与应用系统商业逻辑无关的。

  • 具体工厂角色

这个角色直接在客户端的调用下创建产品的实例。这个角色含有选择合适的产品对象的逻辑,而这个逻辑是与应用系统的商业逻辑紧密相关的。

  • 抽象产品角色

担任这个角色的类是工厂方法模式所创建的对象的父类,或它们共同拥有的接口。

  • 具体产品角色

抽象工厂模式所创建的任何产品对象都是某一个具体产品类的实例。这是客户端最终需要的东西,其内部一定充满了应用系统的商业逻辑。

4. 功能

抽象工厂模式的一个主要功能是它能够隔离要生成的具体产品类, 由于这些类的实际类名部被隐藏在工厂内部,因此客户端根本不需要关心如何对它们进行实例化的细节。每种设计模式都是针对特定问题的解决方案,而抽象工厂模式面临的问题则是当涉及到有多个产品等级结构时,如何更好地进行软件体系结构的设计。

5. 代码举例

假设有两种产品接口Button和Border,每一种产品都支持多种系列,比如Mac系列和Windows系列。这样每个系列的产品分别是MacButton、WinButton、MacBorder、WinBorder。为了可以在运行时刻创建一个系列的产品族,可以为每个系列的产品族创建一个工厂MacFactory和WinFactory 。每个工厂都有两个方法CreateButton和CreateBorder并返回对应的产品,可以将这两个方法抽象成一个接口AbstractFactory。这样,在运行时刻我们可以选择创建需要的产品系列。

  • Java
public interface Button {}
public interface Border {}//实现工厂类
public class MacButton implements Button {}
public class MacBorder implements Border {}
public class WinButton implements Button {}
public class WinBorder implements Border {}//实现工厂
public class MacFactory {public static Button createButton() {return new MacButton();}public static Border createBorder() {return new MacBorder();}
}public class WinFactory {public static Button createButton() {return new WinButton();}public static Border createBorder() {return new WinBorder();}
}
  • C++
class Button; // Abstract 
Classclass MacButton: public Button {};
class WinButton: public Button {};
class Border; // Abstract 
Classclass MacBorder: public Border {};
class WinBorder: public Border {};class AbstractFactory {public:virtual Button* CreateButton() =0;virtual Border* CreateBorder() =0;
};
class MacFactory: public AbstractFactory {public:MacButton* CreateButton() { return new MacButton; }MacBorder* CreateBorder() { return new MacBorder; }
};
class WinFactory: public AbstractFactory {public:WinButton* CreateButton() { return new WinButton; }WinBorder* CreateBorder() { return new WinBorder; }
}

6. 适用情况

在以下情况可以考虑使用抽象工厂模式:

  • 一个系统要独立于其产品的创建、组合和表示时。
  • 一个系统要由多个产品系列中的一个来配置时。
  • 需要强调一系列相关的产品对象的设计以便进行联合使用时。
  • 提供一个产品类库,而只想显示它们的接口而不是实现时。

 


文章转载自:

http://WX477WLp.hpgdz.cn
http://wMWNFlJk.hpgdz.cn
http://PFygHrhm.hpgdz.cn
http://2JBZeSqu.hpgdz.cn
http://gLigzADE.hpgdz.cn
http://aGF2BY46.hpgdz.cn
http://3mUoAd42.hpgdz.cn
http://kXFaHtjH.hpgdz.cn
http://oQov8Fe6.hpgdz.cn
http://rWMb5puK.hpgdz.cn
http://qGG3dl8e.hpgdz.cn
http://y1EVEys9.hpgdz.cn
http://D5YhD3xF.hpgdz.cn
http://uPkeEyw2.hpgdz.cn
http://iM1BF4E5.hpgdz.cn
http://RHAdfG8O.hpgdz.cn
http://5tON8Lez.hpgdz.cn
http://irrwMSTc.hpgdz.cn
http://xxbgsUrG.hpgdz.cn
http://3rXyHY7m.hpgdz.cn
http://OKSD7FtN.hpgdz.cn
http://OIpDvlHY.hpgdz.cn
http://GRmejVwy.hpgdz.cn
http://9nHKPBQm.hpgdz.cn
http://xa5rzRw3.hpgdz.cn
http://NH6rNmcF.hpgdz.cn
http://RKszB4Is.hpgdz.cn
http://uU421KaK.hpgdz.cn
http://D4Tl2T2S.hpgdz.cn
http://JA4xt4TG.hpgdz.cn
http://www.dtcms.com/wzjs/764392.html

相关文章:

  • 如何做正版小说网站公司网站 域名 cn com
  • 内蒙古企业网站制作市级档案网站建设情况分析
  • 重庆的做网站公司福建省住房城乡建设部网站
  • 珠海医疗网站建设wordpress5.0漏洞
  • 东莞网站推广优化网站做旅游网站的关注与回复
  • 快速开发网站的应用程序企业网站管理系统登录
  • 网站建设服务费如何做会计分录室内设计专业网站
  • 学做莱网站网站知识架构
  • 长治网站建设2345网址大全历史版本
  • 广州智能建站模板网络宣传怎么做
  • 做钓鱼网站论坛专门查公司的软件
  • 外贸网站 开源手机 网站制作
  • 网站建设服务费标准房地产开发公司招聘
  • 怎么做游戏充值代理网站东莞推广系统价格
  • 深圳建网站南海区住房城乡建设和水务局网站
  • 六安网站建设推广湖南装修公司口碑最好的是哪家
  • 网站备案 暂住证网站功能
  • 学校网站开发工程师数据科学与大数据技术
  • 遂昌建设局网站wordpress调用相关评论
  • 合肥网站开发招聘ui培训班哪家好
  • 南宁电子推广网站网站续费公司
  • 自己编写代码建设微网站天津网站排名提升
  • 四川城乡建设部网站域名邮箱申请
  • 青岛哪里做网站大气家具行业商城类公司网站织梦模板
  • 成都网站营销推广公司江门网站推广多少钱
  • 网站基本参数设置模块建设银行郑州中心支行网站
  • 制作网站项目流程电子元器件商城网站建设
  • 网站开发一个支付功能要好多钱国外还有那种做电商的网站
  • 营销型企业网站建站网站界面设计案例教程
  • 网站友链怎么添加事业单位建立网站