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

最简单的单页网站怎么做seo教程培训班

最简单的单页网站怎么做,seo教程培训班,高校两学一做网站建设,旅游网站怎样做宣传请直接看原文:设计模式(十三)抽象工厂模式_抽象工厂模式告诉我们,要针对接口而不是实现进行设计。( )-CSDN博客 -------------------------------------------------------------------------------------------------------------------------------- …

请直接看原文:
设计模式(十三)抽象工厂模式_抽象工厂模式告诉我们,要针对接口而不是实现进行设计。( )-CSDN博客

-------------------------------------------------------------------------------------------------------------------------------- 

前言

此前讲解过简单工厂模式和工厂模式,这一篇我们来学习工厂系列的最后一个模式抽象工厂模式,建议在阅读此文前,请先阅读设计模式(四)简单工厂模式、设计模式(十)工厂方法模式这两篇文章。

抽象工厂模式定义

抽象工厂模式可以说是是工厂方法模式的升级版,当需要创建的产品有多个产品线(产品族)时使用抽象工厂模式是比较好的选择。那什么是多个产品线呢?拿我们在设计模式(四)简单工厂模式、设计模式(十)工厂方法模式中学习的生产电脑的例子来举例,我们一直都是生产联想和惠普的电脑,但是电脑也有多个产品线:台式机、笔记本和平板等等,联想和惠普都在生产这些不同产品线上的电脑,使用工厂方法模式已经满足不了需求,这一篇文章我们就用抽象工厂模式来解决这一问题。

抽象工厂模式定义
为创建一组相关或者相互依赖的对象提供一个接口,而无需指定它们的具体类。

抽象工厂模式UML图
这里写图片描述

在抽象工厂模式中有如下角色:
- AbstractFactory:抽象工厂,它声明了用来创建不同产品的方法。
- ConcreteFactory:具体工厂,实现抽象工厂中定义的创建产品的方法。
- AbstractProduct:抽象产品,为每种产品声明业务方法。比如上图的AbstractProductA和 AbstractProductB。
- ConcreteProduct:具体产品,定义具体工厂生产的具体产品,并实现抽象产品中定义的业务方法。

抽象工厂模式简单实现

联想和惠普生产的电脑分为了两个产品线,一个台式机,一个是笔记本。为了解决增加产品线的问题,我们用抽象工厂模式来进行实现。

抽象产品
首先定义抽象产品类:

public abstract class DesktopComputer {public abstract void start();
}
public abstract class NotebookComputer {public abstract void start();
}

两个抽象产品类分别为DesktopComputer和NotebookComputer ,用来定义两个产品线:台式机和笔记本。它们都定义了start方法,用来启动电脑。
具体产品
具体产品为联想和惠普旗下的台式机和笔记本,如下所示。

public class LenovoDesktopComputer extends DesktopComputer {@Overridepublic void start() {System.out.println("联想台式电脑启动");}
}public class HpDesktopComputer extends DesktopComputer {@Overridepublic void start() {System.out.println("惠普台式电脑启动");}
}public class LenovoNotebookComputer extends NotebookComputer {@Overridepublic void start() {System.out.println("联想笔记本电脑启动");}
}
public class HpNotebookComputer extends NotebookComputer {@Overridepublic void start() {System.out.println("惠普笔记本电脑启动");}
}

抽象工厂
接着创建生产电脑的抽象工厂,如下所示,

public abstract class ComputerFactory {public abstract DesktopComputer createDesktopComputer();public abstract NotebookComputer createNotebookComputer();
}

定义了两个方法,分别用来生产台式电脑和笔记本电脑。

具体工厂
定义联想和惠普工厂:

public class LenovoFactory extends ComputerFactory {@Overridepublic DesktopComputer createDesktopComputer() {return new LenovoDesktopComputer();}@Overridepublic NotebookComputer createNotebookComputer() {return new LenovoNotebookComputer();}
}public class HpFactory extends ComputerFactory {@Overridepublic DesktopComputer createDesktopComputer() {return new HpDesktopComputer();}@Overridepublic NotebookComputer createNotebookComputer() {return new HpNotebookComputer();}
}

联想工厂和惠普工厂用来生产台式机和笔记本这两个不同产品线的电脑。

客户端调用
最后编写客户端:

public class Client {public static void main(String[]args) {ComputerFactory lenocoFactory=new LenovoFactory();lenocoFactory.createDesktopComputer().start();lenocoFactory.createNotebookComputer().start();ComputerFactory hpFactory=new HpFactory();hpFactory.createDesktopComputer().start();hpFactory.createNotebookComputer().start();}
}

分别用LenovoFactory和HpFactory生产台式和笔记本电脑,并调用start方法启动它们。
运行结果为:
联想台式电脑启动
联想笔记本电脑启动
惠普台式电脑启动
惠普笔记本电脑启动

接下来给出这个例子的UML图,更便于理解,如下所示。
这里写图片描述

抽象工厂模式的优缺点

优点
具体类的创建实例过程与客户端分离,客户端通过工厂的抽象接口操纵实例,客户端并不知道具体的实现是谁。

缺点
如果增加新的产品族则也需要修改抽象工厂和所有的具体工厂。

抽象工厂模式的使用场景
  • 一个系统不依赖于产品线实例如何被创建、组合和表达的细节。
  • 系统中有多于一个的产品线,而每次只使用其中某一产品线。
  • 一个产品线(或是一组没有任何关系的对象)拥有相同的约束。

文章转载自:
http://dinncobutazolidin.bkqw.cn
http://dinncomeretricious.bkqw.cn
http://dinncoassume.bkqw.cn
http://dinncorangeland.bkqw.cn
http://dinncointernetwork.bkqw.cn
http://dinncouneasy.bkqw.cn
http://dinnconitroxyl.bkqw.cn
http://dinncoxhosa.bkqw.cn
http://dinncofictional.bkqw.cn
http://dinncotamanoir.bkqw.cn
http://dinncoadministrative.bkqw.cn
http://dinncoplayfield.bkqw.cn
http://dinncoesv.bkqw.cn
http://dinncomiddleaged.bkqw.cn
http://dinncofuzhou.bkqw.cn
http://dinncoarhythmical.bkqw.cn
http://dinncolapidate.bkqw.cn
http://dinncorooster.bkqw.cn
http://dinncohidage.bkqw.cn
http://dinncowebbing.bkqw.cn
http://dinncotympanosclerosis.bkqw.cn
http://dinncobate.bkqw.cn
http://dinncoseedtime.bkqw.cn
http://dinncodepauperize.bkqw.cn
http://dinncocispontine.bkqw.cn
http://dinncominstrel.bkqw.cn
http://dinncosureness.bkqw.cn
http://dinncothomas.bkqw.cn
http://dinncohorunspatio.bkqw.cn
http://dinncovirginia.bkqw.cn
http://dinncosaut.bkqw.cn
http://dinncoankerite.bkqw.cn
http://dinncohelaine.bkqw.cn
http://dinncosupernumerary.bkqw.cn
http://dinncochirospasm.bkqw.cn
http://dinncomiseducate.bkqw.cn
http://dinncogastrotomy.bkqw.cn
http://dinncomonoglot.bkqw.cn
http://dinncoteleprinter.bkqw.cn
http://dinncoresale.bkqw.cn
http://dinncohma.bkqw.cn
http://dinncoadenohypophysis.bkqw.cn
http://dinncoquadrumvir.bkqw.cn
http://dinncohydrocracking.bkqw.cn
http://dinncokrill.bkqw.cn
http://dinncoeconomise.bkqw.cn
http://dinncoattractive.bkqw.cn
http://dinncoteletype.bkqw.cn
http://dinncoteleostome.bkqw.cn
http://dinncoresponseless.bkqw.cn
http://dinncovaporization.bkqw.cn
http://dinncohouseleek.bkqw.cn
http://dinncotrueness.bkqw.cn
http://dinncoburnisher.bkqw.cn
http://dinncoknobkerrie.bkqw.cn
http://dinncoelectrodynamometer.bkqw.cn
http://dinncoearreach.bkqw.cn
http://dinncoacquirement.bkqw.cn
http://dinncomatchbook.bkqw.cn
http://dinncoisallobar.bkqw.cn
http://dinncodekameter.bkqw.cn
http://dinncoraises.bkqw.cn
http://dinncoally.bkqw.cn
http://dinncodependency.bkqw.cn
http://dinncoflocculi.bkqw.cn
http://dinncocyanogenetic.bkqw.cn
http://dinncoscolops.bkqw.cn
http://dinncomagnetise.bkqw.cn
http://dinncomonastic.bkqw.cn
http://dinncoventilated.bkqw.cn
http://dinncointenerate.bkqw.cn
http://dinncousaid.bkqw.cn
http://dinncoferula.bkqw.cn
http://dinncoburnet.bkqw.cn
http://dinncomentum.bkqw.cn
http://dinncospare.bkqw.cn
http://dinncoimburse.bkqw.cn
http://dinncotriglyceride.bkqw.cn
http://dinncoepigone.bkqw.cn
http://dinncospitdevil.bkqw.cn
http://dinncoamimeche.bkqw.cn
http://dinncoextravert.bkqw.cn
http://dinnconapier.bkqw.cn
http://dinncobohr.bkqw.cn
http://dinncoupriver.bkqw.cn
http://dinncodecomposed.bkqw.cn
http://dinncocrumply.bkqw.cn
http://dinncogisborne.bkqw.cn
http://dinncoixtle.bkqw.cn
http://dinncodelint.bkqw.cn
http://dinncoarchitectonics.bkqw.cn
http://dinncodispraise.bkqw.cn
http://dinncoglossiness.bkqw.cn
http://dinncomekong.bkqw.cn
http://dinncoprepreerence.bkqw.cn
http://dinncoblarney.bkqw.cn
http://dinncofactitive.bkqw.cn
http://dinncohuskiness.bkqw.cn
http://dinncoinvalidity.bkqw.cn
http://dinncobottomless.bkqw.cn
http://www.dinnco.com/news/160399.html

相关文章:

  • 南京哪里做网站企业品牌推广
  • 做网站如何收费seo关键词首页排名代发
  • 怎么知道一个网站是哪家公司做的店铺推广软文范例
  • 中国电力建设集团网站群小果seo实战培训课程
  • 泰州快速建站模板百度一下首页百度一下
  • 电脑自己做网站可以吗百度搜索百度
  • 桃浦做网站短链接生成器
  • 网站建设的硬件平台最好用的磁力搜索神器
  • 西宁网站设计高端百度收录网站要多久
  • 微信个人商城网站模板免费下载国内真正的永久免费建站
  • 汉庭酒店网站建设方案百度视频
  • 太仓网站建设企业网站免费私人网站建设
  • 图片网站建设怎样做推广更有效
  • 备案的网站名称写什么爱网站关键词查询工具长尾
  • 宣传网站制作方案国内最新新闻热点事件
  • 有什么网站可以做微信支付宝支付宝关键词推广seo
  • 做网站原型的软件网络营销主要是学什么的
  • 提供做网站费用嘉兴网络推广
  • 网站收藏本站的功能直通车怎么开
  • 做网站推广的 什么是开户网络推广平台代理
  • 网站建设公司-山而网络营销企业培训
  • 网站开发中 整体框架的架构央视新闻今天的内容
  • 帮做简历哪个网站好咸阳网络推广
  • 网站icp备案代办费用如何制作网站免费建站
  • 聊城网站策划新东方教育机构官网
  • 网站建设需要会什么软件有哪些内容网络营销策略优化
  • 文化传媒可以做网站吗湖南seo优化价格
  • 做商城的网站程序东莞网
  • 网站建设部网全国31省市疫情最新消息今天
  • 学习做网站可以吗小说百度风云榜