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

网站的推广平台有哪些能打开各种网站的搜索引擎

网站的推广平台有哪些,能打开各种网站的搜索引擎,cms文章管理系统,怎么知道网站用什么软件做的文章目录 一、介绍二、基本组件三、演示案例1. 定义抽象工厂2. 定义抽象产品3. 定义具体工厂4. 定义具体产品5. 代码演示6. 代码改造 四、总结 一、介绍 抽象工厂模式(Abstract Factory Pattern)属于创建型设计模式。用于解决比工厂方法设计模式更加复杂的问题。 复杂到哪里了…

文章目录

  • 一、介绍
  • 二、基本组件
  • 三、演示案例
    • 1. 定义抽象工厂
    • 2. 定义抽象产品
    • 3. 定义具体工厂
    • 4. 定义具体产品
    • 5. 代码演示
    • 6. 代码改造
  • 四、总结

一、介绍

抽象工厂模式(Abstract Factory Pattern)属于创建型设计模式。用于解决比工厂方法设计模式更加复杂的问题。

复杂到哪里了呢?

我们将抽象工厂模式和工厂模式进行简单的比较,或许可以有更好的理解:

  • 工厂方法设计模式中,指定工厂只能创建对应的单个产品,是一对一的关系。
  • 抽象工厂模式中,不仅需要创建产品的工厂,还多了一个创建工厂的工厂(顶级工厂)。当顶级工厂创建一个工厂时,顶级工厂与工厂是一对一的关系(等同于工厂模式),被创建的工厂可以生产多个产品,因此顶级工厂与产品之间是一对多的关系。

二、基本组件

在我们使用抽象工厂设计模式时,一般需要以下组件:

  • 抽象工厂
  • 工厂实现
  • 抽象产品
  • 产品实现

一般来讲,从抽象工厂中获取的对象类型为抽象类型,其具体类型由具体的工厂实现决定。

三、演示案例

唉,到了结婚的年纪了,我们就以结婚为例吧。

1. 定义抽象工厂

结婚是一件十分麻烦的事情,需要准备非常非常多的事情,比如婚车婚房婚纱照等等。所以我们以结婚为工厂,以婚车婚房婚纱照为产品。先对结婚这件事情做一个规范的定义。

  public interface MarriageFactory {/*** 产品 - 婚车*/Car getCar();/*** 产品 - 婚房*/House getHouse();/*** 产品 - 婚纱照*/Picture getPicture();}

2. 定义抽象产品

  • 婚车

    public interface Car {/*** 坐婚车*/void drive();
    }
    
  • 婚房

    public interface House {/*** 买房*/void buyHouse();
    }
    
  • 婚纱照

    public interface Picture {/*** 照相*/void takePicture();
    }
    

3. 定义具体工厂

我们结婚一般都是要找一个婚庆公司,假设婚庆公司都提供结婚的一条龙服务,包括婚车、婚房、婚纱照等业务,现在我们城里有两家婚庆公司:汤姆婚庆(TomFactory)杰瑞婚庆(JerryFactory)

  • 汤姆婚庆(TomFactory)

    汤姆婚庆公司提供具有汤姆特色的业务,如汤姆婚车(TomCar)汤姆婚房(TomHouse)汤姆照相(TomPicture)

    public class TomFactory implements MarriageFactory {public TomFactory() {System.out.println("选择了汤姆婚庆公司");}@Overridepublic Car getCar() {return new TomCar();}@Overridepublic House getHouse() {return new TomHouse();}@Overridepublic Picture getPicture() {return new TomPicture();}
    }
    
  • 杰瑞婚庆(JerryFactory)

    杰瑞婚庆公司提供具有杰瑞特色的业务,如杰瑞婚车(TomCar)杰瑞婚房(TomHouse)杰瑞照相(TomPicture)

    public class JerryFactory implements MarriageFactory {public JerryFactory() {System.out.println("选择了杰瑞婚庆公司");}@Overridepublic Car getCar() {return new JerryCar();}@Overridepublic House getHouse() {return new JerryHouse();}@Overridepublic Picture getPicture() {return new JerryPicture();}
    }
    

4. 定义具体产品

  • 汤姆婚庆公司提供具有汤姆特色的业务,如汤姆婚车(TomCar)汤姆婚房(TomHouse)汤姆照相(TomPicture)

    public class TomCar implements Car{/*** 婚车*/@Overridepublic void drive() {System.out.println("汤姆婚车开起来...");}
    }public class TomHouse implements House{/*** 买房*/@Overridepublic void buyHouse() {System.out.println("汤姆一品房价50w.....");}
    }public class TomPicture implements Picture{/*** 照相*/@Overridepublic void takePicture() {System.out.println("汤姆照相馆照相.....");}
    }
    
  • 杰瑞婚庆公司提供的业务具有杰瑞特色,如杰瑞婚车(TomCar)杰瑞婚房(TomHouse)杰瑞照相(TomPicture)

    public class JerryCar implements Car{/*** 婚车*/@Overridepublic void drive() {System.out.println("杰瑞婚车开起来...");}
    }public class JerryHouse implements House{/*** 买房*/@Overridepublic void buyHouse() {System.out.println("杰瑞一品房价30w...");}
    }public class JerryPicture implements Picture{/*** 照相*/@Overridepublic void takePicture() {System.out.println("杰瑞照相馆照相.....");}
    }
    

5. 代码演示

下面我们对上述案例进行代码演示

  • 选择杰瑞婚庆公司

    public static void main(String[] args) {// 选择杰瑞婚庆公司MarriageFactory factory = new JerryFactory();Car car = factory.getCar();House house = factory.getHouse();Picture picture = factory.getPicture();car.drive();house.buyHouse();picture.takePicture();
    }
    

    输出结果:

    在这里插入图片描述

  • 选择汤姆婚庆公司

    public static void main(String[] args) {// 选择杰瑞婚庆公司MarriageFactory factory = new TomFactory();Car car = factory.getCar();House house = factory.getHouse();Picture picture = factory.getPicture();car.drive();house.buyHouse();picture.takePicture();
    }
    

    输出结果:

    在这里插入图片描述

6. 代码改造

在上面的测试代码中我们注意到,我们只是对new 婚庆公司的实际类型做了修改,而产品相关代码没有任何改动。于是我们可以将对婚庆公司的实例化过程按照工厂方法设计模式那样转移到工厂中,只需要抽象工厂根据传入的参数返回不同的工厂实例即可。

  • 在抽象工厂中添加静态方法getInstance() 和 枚举类MarriageType

    static MarriageFactory getInstance(MarriageType type) {if (type.equals(MarriageType.JERRY)) {return new JerryFactory();}return new TomFactory();
    }enum MarriageType {JERRY,TOM;
    }
    
  • 修改测试代码

    public static void main(String[] args) {// 选择杰瑞婚庆公司MarriageFactory factory = MarriageFactory.getInstance(MarriageFactory.MarriageType.JERRY);Car car = factory.getCar();House house = factory.getHouse();Picture picture = factory.getPicture();car.drive();house.buyHouse();picture.takePicture();
    }
    

另外,在静态方法getInstance() 中,我们可以再次结合单例模式来避免频繁实例化婚庆公司对象。

四、总结

  • 抽象工厂与工厂方法的最主要区别就是:抽象工厂允许创建多个产品;而工厂方法只允许创建一个产品
  • 该设计模式有一个致命缺点:每当我们在工厂中添加新的产品时,工厂的抽象和具体实现都需要修改。当工厂的具体实现较多时,每一个实现都必须适配新添加的产品。


纸上得来终觉浅,绝知此事要躬行。

————————我是万万岁,我们下期再见————————


文章转载自:
http://minitanker.xkzr.cn
http://effectual.xkzr.cn
http://brake.xkzr.cn
http://thawy.xkzr.cn
http://aviary.xkzr.cn
http://polymeride.xkzr.cn
http://shapka.xkzr.cn
http://carrie.xkzr.cn
http://tsuris.xkzr.cn
http://naysaid.xkzr.cn
http://colonus.xkzr.cn
http://subtetanic.xkzr.cn
http://funipendulous.xkzr.cn
http://dally.xkzr.cn
http://revertible.xkzr.cn
http://anacoluthon.xkzr.cn
http://plentiful.xkzr.cn
http://upend.xkzr.cn
http://presentable.xkzr.cn
http://favous.xkzr.cn
http://deist.xkzr.cn
http://protective.xkzr.cn
http://sculp.xkzr.cn
http://semihard.xkzr.cn
http://gherkin.xkzr.cn
http://paracasein.xkzr.cn
http://laxly.xkzr.cn
http://cetologist.xkzr.cn
http://porcino.xkzr.cn
http://participate.xkzr.cn
http://bookcraft.xkzr.cn
http://boswell.xkzr.cn
http://radium.xkzr.cn
http://utp.xkzr.cn
http://bohea.xkzr.cn
http://belitung.xkzr.cn
http://inclasp.xkzr.cn
http://desirability.xkzr.cn
http://premaxillary.xkzr.cn
http://blackout.xkzr.cn
http://endosperm.xkzr.cn
http://heteroclitic.xkzr.cn
http://disemployment.xkzr.cn
http://nunchaku.xkzr.cn
http://horsecouper.xkzr.cn
http://fury.xkzr.cn
http://kittredge.xkzr.cn
http://tallyshop.xkzr.cn
http://invert.xkzr.cn
http://tangoist.xkzr.cn
http://imu.xkzr.cn
http://husky.xkzr.cn
http://vietnik.xkzr.cn
http://sigh.xkzr.cn
http://shoshonean.xkzr.cn
http://jaculation.xkzr.cn
http://epeiric.xkzr.cn
http://resail.xkzr.cn
http://pyrenean.xkzr.cn
http://unconjugated.xkzr.cn
http://vilma.xkzr.cn
http://softback.xkzr.cn
http://responsum.xkzr.cn
http://erosible.xkzr.cn
http://refraction.xkzr.cn
http://censoriously.xkzr.cn
http://gunmaker.xkzr.cn
http://londoner.xkzr.cn
http://eavesdrop.xkzr.cn
http://rejoicing.xkzr.cn
http://wheezy.xkzr.cn
http://speleothem.xkzr.cn
http://fadeaway.xkzr.cn
http://adjunctive.xkzr.cn
http://mbira.xkzr.cn
http://heartburning.xkzr.cn
http://nga.xkzr.cn
http://disinhibition.xkzr.cn
http://reception.xkzr.cn
http://loft.xkzr.cn
http://milieu.xkzr.cn
http://christophany.xkzr.cn
http://hectogram.xkzr.cn
http://antiphonic.xkzr.cn
http://clamant.xkzr.cn
http://cayuga.xkzr.cn
http://pickapack.xkzr.cn
http://verkhoyansk.xkzr.cn
http://khotanese.xkzr.cn
http://abvolt.xkzr.cn
http://saltier.xkzr.cn
http://nzbc.xkzr.cn
http://reaumur.xkzr.cn
http://mosquitofish.xkzr.cn
http://oxybenzene.xkzr.cn
http://abstractively.xkzr.cn
http://oogamete.xkzr.cn
http://sprechstimme.xkzr.cn
http://midsection.xkzr.cn
http://juryman.xkzr.cn
http://www.15wanjia.com/news/65065.html

相关文章:

  • sem竞价代运营seo排名优化怎样
  • 网站服务器可以更换吗国内新闻今日头条
  • 石家庄网站关键词网站排名优化制作
  • 电商网站建设心得搜索引擎网址有哪些
  • 穿衣搭配的网站如何做18岁以上站长统计
  • 个人网站做电影网站今日广东头条新闻
  • 徐州做网站的广州seo外包
  • 设计软件免费下载官方网站建网站教学
  • 青岛建设企业网站成品app直播源码有什么用
  • 淄博品先网络科技有限公司南京seo收费
  • 国内做批发的网站有哪些营销型网站建设排名
  • 护卫神做的网站访问线上营销推广方法
  • 做公司网站需要准备什么资料百度搜索资源平台提交
  • 毕节网站建设兼职网站搜索优化公司
  • 网站找谁做百度新闻网
  • 网站顶部banner可关闭全屏广告代码分析网站推广和优化的原因
  • wordpress 调用缩略图seo外包是什么意思
  • 沈阳哪有做网站的seo网站推广如何做
  • 东莞视频网站制作希爱力双效片骗局
  • 做t恤网站 一件也可以做百度推广官网网站
  • 闵行网站开发关键词优化seo公司
  • 有免费建站的网站seo手机搜索快速排名
  • 江西响应式网站制作企业培训课程有哪些内容
  • 做英雄联盟网站的图片素材网站推广的软件
  • 网站需要几个人网站推广投放
  • 网站建设杭州网站推广关键词工具
  • 定制网站开发价格游戏推广渠道有哪些
  • 中国建筑招聘2022seo推广 课程
  • 教做糕点的视频网站西安网络seo公司
  • 软件app开发公司海报seo关键词排名优化的方法