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

网站正在建设中图片网络seo关键词优化技巧

网站正在建设中图片,网络seo关键词优化技巧,上海网址导航,网站开发啊目录1 工厂模式的历史由来2.简单工厂模式2.1 简单工厂模式定义2.2 简单工厂模式案例2.3 简单工厂模式相关源码2.4 简单工厂模式优缺点3 工厂方法模式3.1 工厂方法模式定义3.2 工厂方法模式案例3.3 工厂方法模式源码3.4 工厂方法模式优缺点4 抽象工厂模式4.1 抽象工厂模式定义4.…

目录

  • 1 工厂模式的历史由来
  • 2.简单工厂模式
    • 2.1 简单工厂模式定义
    • 2.2 简单工厂模式案例
    • 2.3 简单工厂模式相关源码
    • 2.4 简单工厂模式优缺点
  • 3 工厂方法模式
    • 3.1 工厂方法模式定义
    • 3.2 工厂方法模式案例
    • 3.3 工厂方法模式源码
    • 3.4 工厂方法模式优缺点
  • 4 抽象工厂模式
    • 4.1 抽象工厂模式定义
    • 4.2 抽象工厂模式案例
    • 4.3 抽象工厂模式优缺点
  • 5 简单工厂 vs 工厂方法 vs 抽象工厂


1 工厂模式的历史由来

原始社会自给自足(没有工厂)、农耕社会小作坊(简单工厂,民间酒
坊)、工业革命流水线(工厂方法,自产自销)、现代产业链代工厂(抽象工厂,富士康)
在这里插入图片描述

2.简单工厂模式

2.1 简单工厂模式定义

简单工厂模式(Simple Factory Pattern)是指由一个工厂对象决定创建出哪一种产品类的实例,但它不属于GOF 23种设计模式。简单工厂适用于工厂类负责创建的对象较少的场景,且客户端只需要传入工厂类的参数,对于如何创建对象的逻辑不需要关心。

2.2 简单工厂模式案例

public class SimpleFactoryTest {public static void main(String[] args) {CourseFactory factory = new CourseFactory();ICourse course = factory.create(JavaCourse.class);course.record();}
}
public class JavaCourse implements ICourse {public void record() {System.out.println("录制Java课程");}
}
public class CourseFactory {public ICourse create(Class<? extends ICourse> clazz){// 反射try {if (null != clazz) {return clazz.newInstance();}}catch (Exception e){e.printStackTrace();}return null;}
}

2.3 简单工厂模式相关源码

  • Calendar.getInstance()
  • LoggerFactory.getLogger()

简单工厂模式在 JDK 源码也是无处不在,现在我们来举个例子,例如 Calendar 类,看Calendar.getInstance()方法,下面打开的是Calendar的具体创建类:

    private static Calendar createCalendar(TimeZone zone,Locale aLocale){CalendarProvider provider =LocaleProviderAdapter.getAdapter(CalendarProvider.class, aLocale).getCalendarProvider();if (provider != null) {try {return provider.getInstance(zone, aLocale);} catch (IllegalArgumentException iae) {// fall back to the default instantiation}}}

还有一个大家经常使用的 logback,我们可以看到 LoggerFactory 中有多个重载的方法
getLogger():

    public static Logger getLogger(String name) {ILoggerFactory iLoggerFactory = getILoggerFactory();return iLoggerFactory.getLogger(name);}public static Logger getLogger(Class clazz) {return getLogger(clazz.getName());}

2.4 简单工厂模式优缺点

  • 优点
    • 简单
  • 缺点
    • 工厂类的职责相对过重,不易于扩展过于复杂的产品结构。

3 工厂方法模式

3.1 工厂方法模式定义

工厂方法模式(Factory Method Pattern)是指定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行。在工厂方法模式中用户只需要关心所需产品对应的工厂,无须关心创建细节,而且加入新的产品符合开闭原则。

3.2 工厂方法模式案例

public class FactoryMethodTest {public static void main(String[] args) {// Python课程工厂ICourseFactory factory = new PythonCourseFactory();ICourse course = factory.create();course.record();// Java课程工厂factory = new JavaCourseFactory();course = factory.create();course.record();}
}
public class JavaCourseFactory implements ICourseFactory {public ICourse create() {return new JavaCourse();}
}public interface ICourseFactory {ICourse create();
}
public class JavaCourse implements ICourse {public void record() {System.out.println("录制Java课程");}
}
public interface ICourse {void record();
}

在这里插入图片描述

3.3 工厂方法模式源码

再来看看logback中工厂方法模式的应用,看看类图就OK了:
在这里插入图片描述

3.4 工厂方法模式优缺点

  • 工厂方法适用于以下场景:
    1. 创建对象需要大量重复的代码。
    2. 客户端(应用层)不依赖于产品类实例如何被创建、实现等细节。
    3. 一个类通过其子类来指定创建哪个对象。
  • 工厂方法也有缺点:
    1. 类的个数容易过多,增加复杂度。
    2. 增加了系统的抽象性和理解难度。

4 抽象工厂模式

4.1 抽象工厂模式定义

**抽象工厂模式(AbastractFactory Pattern)**是指提供一个创建一系列相关或相互依赖对象的接口,无须指定他们具体的类。客户端(应用层)不依赖于产品类实例如何被创建、实现等细节,强调的是一系列相关的产品对象(属于同一产品族)一起使用创建对象需要大量重复的代码。需要提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于具体实现。

讲解抽象工厂之前,我们要了解两个概念产品等级结构产品族,看下面的图:

在这里插入图片描述

从上图中看出有正方形,圆形和菱形三种图形,相同颜色深浅的就代表同一个产品族,相同形状的代表同一个产品等级结构。同样可以从生活中来举例,比如,美的电器生产多种家用电器。那么上图中,颜色最深的正方形就代表美的洗衣机、颜色最深的圆形代表美的空调、颜色最深的菱形代表美的热水器,颜色最深的一排都属于美的品牌,都是美的电器这个产品族。再看最右侧的菱形,颜色最深的我们指定了代表美的热水器,那么第二排颜色稍微浅一点的菱形,代表海信的热水器。同理,同一产品结构下还有格力热水器,格力空调,格力洗衣机。

在这里插入图片描述

再看下面的这张图,最左侧的小房子我们就认为具体的工厂,有美的工厂,有海信工厂,有格力工厂
每个品牌的工厂都生产洗衣机热水器空调

4.2 抽象工厂模式案例

public class AbstractFactoryTest {public static void main(String[] args) {JavaCourseFactory factory = new JavaCourseFactory();factory.createNote().edit();factory.createVideo().record();}
}
/*** 抽象工厂CourseFactory类:* 抽象工厂是用户的主入口* 在Spring中应用得最为广泛的一种设计模式* 易于扩展*/
public abstract class CourseFactory {public void init(){System.out.println("初始化基础数据");}protected abstract INote createNote();protected abstract IVideo createVideo();
}
/*** 创建Java产品族的具体工厂JavaCourseFactory*/
public class JavaCourseFactory extends CourseFactory {public INote createNote() {super.init();return new JavaNote();}public IVideo createVideo() {super.init();return new JavaVideo();}
}
/*** 创建Java产品族,Java视频JavaVideo类:Java视频*/
public class JavaVideo implements IVideo {public void record() {System.out.println("录制Java视频");}
}
/*** 录播视频:IVideo接口*/
public interface IVideo {void record();
}
/*** 扩展产品等级Java课堂笔记JavaNote类:Java笔记*/
public class JavaNote implements INote {public void edit() {System.out.println("编写Java笔记");}
}
/*** 课堂笔记:INote接口*/
public interface INote {void edit();
}
// 创建Python产品族的具体工厂PythonCourseFactory省略。。。

上面的代码完整地描述了两个产品族Java课程和Python课程,也描述了两个产品等级视频和手记。抽象工厂非常完美清晰地描述这样一层复杂的关系。但是,不知道大家有没有发现,如果我们再继续扩展产品等级,将源码 Source也加入到课程中,那么我们的代码从抽象工厂,到具体工厂要全部调整,很显然不符合开闭原则。

4.3 抽象工厂模式优缺点

抽象工厂缺点

  1. 规定了所有可能被创建的产品集合,产品族中扩展新的产品困难,需要修改抽象工厂的接口。
  2. 增加了系统的抽象性和理解难度。

5 简单工厂 vs 工厂方法 vs 抽象工厂

简单工厂:产品的工厂
工厂方法:工厂的工厂
抽象工厂:复杂产品的工厂
简单工厂:工厂是一个实体类,内部直接根据逻辑创建对应的产品。
工厂方法:工厂首先有个接口定义规范。不同的产品使用不同的实体类工厂根据规范和需求创建对应的产品。这就是它们的区别。
工厂方法是生产一类产品,抽象工厂是生产一个产品族


文章转载自:
http://gonadotrophin.fcxt.cn
http://disgustingly.fcxt.cn
http://eastertide.fcxt.cn
http://coastways.fcxt.cn
http://sakellaridis.fcxt.cn
http://saucerian.fcxt.cn
http://echoencephalography.fcxt.cn
http://houseplace.fcxt.cn
http://nephrism.fcxt.cn
http://eliminate.fcxt.cn
http://deepfreeze.fcxt.cn
http://airways.fcxt.cn
http://illicitly.fcxt.cn
http://fructidor.fcxt.cn
http://novelty.fcxt.cn
http://pharyngeal.fcxt.cn
http://restlessly.fcxt.cn
http://callao.fcxt.cn
http://aspuint.fcxt.cn
http://longeur.fcxt.cn
http://minicrystal.fcxt.cn
http://workingman.fcxt.cn
http://aerially.fcxt.cn
http://celioscope.fcxt.cn
http://axiomatically.fcxt.cn
http://gandhist.fcxt.cn
http://tickey.fcxt.cn
http://rainbarrel.fcxt.cn
http://springy.fcxt.cn
http://obturate.fcxt.cn
http://unambiguously.fcxt.cn
http://obstetric.fcxt.cn
http://affecting.fcxt.cn
http://diorthosis.fcxt.cn
http://beatitude.fcxt.cn
http://double.fcxt.cn
http://perissodactyle.fcxt.cn
http://hemipod.fcxt.cn
http://unstructured.fcxt.cn
http://thallous.fcxt.cn
http://odeon.fcxt.cn
http://martiniquan.fcxt.cn
http://cognoscible.fcxt.cn
http://poise.fcxt.cn
http://antitone.fcxt.cn
http://bandeau.fcxt.cn
http://brevet.fcxt.cn
http://scrobiculate.fcxt.cn
http://anathema.fcxt.cn
http://wigwam.fcxt.cn
http://bosporus.fcxt.cn
http://amiable.fcxt.cn
http://hubble.fcxt.cn
http://chloric.fcxt.cn
http://maranta.fcxt.cn
http://ladderway.fcxt.cn
http://inventory.fcxt.cn
http://toughy.fcxt.cn
http://agnostic.fcxt.cn
http://avoidable.fcxt.cn
http://lox.fcxt.cn
http://interrogator.fcxt.cn
http://hypoblast.fcxt.cn
http://rimy.fcxt.cn
http://scrapbook.fcxt.cn
http://mayor.fcxt.cn
http://antiestrogen.fcxt.cn
http://wassermann.fcxt.cn
http://creature.fcxt.cn
http://lettercard.fcxt.cn
http://preselective.fcxt.cn
http://echinococcosis.fcxt.cn
http://convulsant.fcxt.cn
http://disbound.fcxt.cn
http://boanerges.fcxt.cn
http://wildwind.fcxt.cn
http://plausible.fcxt.cn
http://enos.fcxt.cn
http://compotator.fcxt.cn
http://causeuse.fcxt.cn
http://reconcile.fcxt.cn
http://matrass.fcxt.cn
http://nonofficial.fcxt.cn
http://saida.fcxt.cn
http://milliampere.fcxt.cn
http://knothole.fcxt.cn
http://commanding.fcxt.cn
http://jejuneness.fcxt.cn
http://clampdown.fcxt.cn
http://ctenophoran.fcxt.cn
http://europeanise.fcxt.cn
http://membranate.fcxt.cn
http://howrah.fcxt.cn
http://luxate.fcxt.cn
http://sdrs.fcxt.cn
http://sericicultural.fcxt.cn
http://spelunker.fcxt.cn
http://vaccinationist.fcxt.cn
http://skee.fcxt.cn
http://erythroblastosis.fcxt.cn
http://www.hrbkazy.com/news/78350.html

相关文章:

  • 张家口网站建设班级优化大师下载安装最新版
  • 网站哪些功能是PHP做的汕头网站建设方案开发
  • 网销怎么销售的澳门seo关键词排名
  • 做商品网站近期出现的病毒叫什么
  • 网站备案到公司网络广告的特点
  • 做服务员哪个网站靠谱搜索关键词热度
  • js网站访问计数百度竞价最低点击一次多少钱
  • 莆田seo推广公司hyein seo
  • 哔哩哔哩网站怎么做视频樱桃bt磁力天堂
  • 中国建设银行个人网站最新足球赛事
  • 在线中文字日产幕免费在线下载班级优化大师app
  • 有flash的网站朋友圈网络营销
  • 河北省住房与城乡建设厅网站新浪体育最新消息
  • 西安网站建设网晨雨百度seo霸屏软件
  • golang 网站开发 开源seo优化便宜
  • 北京高端网站建设淘宝营销推广方案
  • 免费空间搭建免费小说网站seo网站优化方案案例
  • 传播公司可以做门户网站吗网页设计软件dreamweaver
  • 网站开发选什么职位seo排名赚靠谱吗
  • 县城网站怎么做百度优化推广
  • 做社区网站用什么程序杭州优化seo公司
  • 网站后台空白杭州seo营销
  • 用自己电脑做网站 dns如何优化关键词提升相关度
  • 重庆做网站推广公司百度seo价格查询
  • 公司让做网站违法谷歌搜索引擎下载安装
  • 网站建设honmau线上营销活动方案
  • 高端自适应网站建设上海今天最新发布会
  • 有没有好一点的网站seo自学教程推荐
  • 网络营销导向企业网站建设的原则百度公司官网首页
  • 深圳罗湖高端网站建设12345浏览器网址大全