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

做那个网站销售产品比较好互联网广告公司

做那个网站销售产品比较好,互联网广告公司,口碑营销的策略,政府网站集约化建设项目工厂模式 1.什么是工厂模式 它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。实现了创建者和调用者分离,工厂模式分为简单工厂、工厂方法、抽象…

工厂模式

1.什么是工厂模式

它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。实现了创建者和调用者分离,工厂模式分为简单工厂、工厂方法、抽象工厂模式

2.工厂模式好处

工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。
利用工厂模式可以降低程序的耦合性,为后期的维护修改提供了很大的便利。
将选择实现类、创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。

4.Spring开发中的工厂设计模式

1.Spring IOC

看过Spring源码就知道,在Spring IOC容器创建bean的过程是使用了工厂设计模式

Spring中无论是通过xml配置还是通过配置类还是注解进行创建bean,大部分都是通过简单工厂来进行创建的。

当容器拿到了beanName和class类型后,动态的通过反射创建具体的某个对象,最后将创建的对象放到Map中。

2.为什么Spring IOC要使用工厂设计模式创建Bean呢

在实际开发中,如果我们A对象调用B,B调用C,C调用D的话我们程序的耦合性就会变高。(耦合大致分为类与类之间的依赖,方法与方法之间的依赖。)

在很久以前的三层架构编程时,都是控制层调用业务层,业务层调用数据访问层时,都是是直接new对象,耦合性大大提升,代码重复量很高,对象满天飞

为了避免这种情况,Spring使用工厂模式编程,写一个工厂,由工厂创建Bean,以后我们如果要对象就直接管工厂要就可以,剩下的事情不归我们管了。Spring IOC容器的工厂中有个静态的Map集合,是为了让工厂符合单例设计模式,即每个对象只生产一次,生产出对象后就存入到Map集合中,保证了实例不会重复影响程序效率。

5.工厂模式分类

工厂模式分为简单工厂、工厂方法、抽象工厂模式

  • 简单工厂 :用来生产同一等级结构中的任意产品。(不支持拓展增加产品)
  • 工厂方法 :用来生产同一等级结构中的固定产品。(支持拓展增加产品)
  • 抽象工厂 :用来生产不同产品族的全部产品。(不支持拓展增加产品;支持增加产品族)

5.1 简单工厂模式

什么是简单工厂模式

简单工厂模式相当于是一个工厂中有各种产品,创建在一个类中,客户无需知道具体产品的名称,只需要知道产品类所对应的参数即可。但是工厂的职责过重,而且当类型过多时不利于系统的扩展维护。

代码演示:

  1. 创建工厂
package com.lijie;public interface Car {public void run();
}
  1. 创建工厂的产品(宝马)
package com.lijie;public class Bmw implements Car {public void run() {System.out.println("我是宝马汽车...");}
}
  1. 创建工另外一种产品(奥迪)
package com.lijie;public class AoDi implements Car {public void run() {System.out.println("我是奥迪汽车..");}
}
  1. 创建核心工厂类,由他决定具体调用哪产品
package com.lijie;public class CarFactory {public static Car createCar(String name) {if ("".equals(name)) {return null;}if(name.equals("奥迪")){return new AoDi();}if(name.equals("宝马")){return new Bmw();}return null;}
}
  1. 演示创建工厂的具体实例
package com.lijie;public class Client01 {public static void main(String[] args) {Car aodi  =CarFactory.createCar("奥迪");Car bmw  =CarFactory.createCar("宝马");aodi.run();bmw.run();}
}
单工厂的优点/缺点

优点:简单工厂模式能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。明确区分了各自的职责和权力,有利于整个软件体系结构的优化。
缺点:很明显工厂类集中了所有实例的创建逻辑,容易违反GRASPR的高内聚的责任分配原则

5.2 工厂方法模式

什么是工厂方法模式

工厂方法模式Factory Method,又称多态性工厂模式。在工厂方法模式中,核心的工厂类不再负责所有的产品的创建,而是将具体创建的工作交给子类去做。该核心类成为一个抽象工厂角色,仅负责给出具体工厂子类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节

代码演示:

  1. 创建工厂
package com.lijie;public interface Car {public void run();
}
  1. 创建工厂方法调用接口(所有的产品需要new出来必须继承他来实现方法)
package com.lijie;public interface CarFactory {Car createCar();}
  1. 创建工厂的产品(奥迪)
package com.lijie;public class AoDi implements Car {public void run() {System.out.println("我是奥迪汽车..");}
}
  1. 创建工厂另外一种产品(宝马)
package com.lijie;public class Bmw implements Car {public void run() {System.out.println("我是宝马汽车...");}
}
  1. 创建工厂方法调用接口的实例(奥迪)
package com.lijie;public class AoDiFactory implements CarFactory {public Car createCar() {return new AoDi();}
}
  1. 创建工厂方法调用接口的实例(宝马)
package com.lijie;public class BmwFactory implements CarFactory {public Car createCar() {return new Bmw();}}
  1. 演示创建工厂的具体实例
package com.lijie;public class Client {public static void main(String[] args) {Car aodi = new AoDiFactory().createCar();Car jili = new BmwFactory().createCar();aodi.run();jili.run();}
}

5.3 抽象工厂模式

什么是抽象工厂模式

抽象工厂简单地说是工厂的工厂,抽象工厂可以创建具体工厂,由具体工厂来产生具体产品。
在这里插入图片描述
代码演示:

  1. 创建第一个子工厂,及实现类
package com.lijie;//汽车
public interface Car {void run();
}class CarA implements Car{public void run() {System.out.println("宝马");}}class CarB implements Car{public void run() {System.out.println("摩拜");}}
  1. 创建第二个子工厂,及实现类
package com.lijie;//发动机
public interface Engine {void run();}class EngineA implements Engine {public void run() {System.out.println("转的快!");}}class EngineB implements Engine {public void run() {System.out.println("转的慢!");}}
  1. 创建一个总工厂,及实现类(由总工厂的实现类决定调用那个工厂的那个实例)
package com.lijie;public interface TotalFactory {// 创建汽车Car createChair();// 创建发动机Engine createEngine();
}//总工厂实现类,由他决定调用哪个工厂的那个实例
class TotalFactoryReally implements TotalFactory {public Engine createEngine() {return new EngineA();}public Car createChair() {return new CarA();}
}
  1. 运行测试
package com.lijie;public class Test {public static void main(String[] args) {TotalFactory totalFactory2 = new TotalFactoryReally();Car car = totalFactory2.createChair();car.run();TotalFactory totalFactory = new TotalFactoryReally();Engine engine = totalFactory.createEngine();engine.run();}
}

文章转载自:
http://unfixed.rjbb.cn
http://waterishlog.rjbb.cn
http://rabies.rjbb.cn
http://bibulous.rjbb.cn
http://givey.rjbb.cn
http://endothelium.rjbb.cn
http://enneagon.rjbb.cn
http://gridder.rjbb.cn
http://gesture.rjbb.cn
http://levelheaded.rjbb.cn
http://kylin.rjbb.cn
http://seadog.rjbb.cn
http://classroom.rjbb.cn
http://reikjavik.rjbb.cn
http://amrita.rjbb.cn
http://yahwist.rjbb.cn
http://shopworn.rjbb.cn
http://pestilent.rjbb.cn
http://bourg.rjbb.cn
http://acrobatic.rjbb.cn
http://acores.rjbb.cn
http://moistureless.rjbb.cn
http://smuttily.rjbb.cn
http://waver.rjbb.cn
http://endsville.rjbb.cn
http://beryllium.rjbb.cn
http://isoagglutinogen.rjbb.cn
http://cassini.rjbb.cn
http://stoneman.rjbb.cn
http://ventriculi.rjbb.cn
http://unsmart.rjbb.cn
http://bombe.rjbb.cn
http://flare.rjbb.cn
http://cercus.rjbb.cn
http://adjudicative.rjbb.cn
http://glaucoma.rjbb.cn
http://theanthropism.rjbb.cn
http://phyllade.rjbb.cn
http://monopteros.rjbb.cn
http://tuner.rjbb.cn
http://yeanling.rjbb.cn
http://inexertion.rjbb.cn
http://tidings.rjbb.cn
http://castte.rjbb.cn
http://conspecific.rjbb.cn
http://polyandrous.rjbb.cn
http://kronstadt.rjbb.cn
http://hemagglutinin.rjbb.cn
http://cocurricular.rjbb.cn
http://chasmal.rjbb.cn
http://tuc.rjbb.cn
http://radioluminescence.rjbb.cn
http://unkenned.rjbb.cn
http://atman.rjbb.cn
http://dooly.rjbb.cn
http://delta.rjbb.cn
http://fanwise.rjbb.cn
http://roscoelite.rjbb.cn
http://triethylamine.rjbb.cn
http://kirn.rjbb.cn
http://medicine.rjbb.cn
http://scanty.rjbb.cn
http://cohune.rjbb.cn
http://hygeian.rjbb.cn
http://ruben.rjbb.cn
http://aphrodisiac.rjbb.cn
http://choregraphy.rjbb.cn
http://conjoint.rjbb.cn
http://embryulcus.rjbb.cn
http://seasickness.rjbb.cn
http://wfb.rjbb.cn
http://opengl.rjbb.cn
http://overmeasure.rjbb.cn
http://microcurie.rjbb.cn
http://labourer.rjbb.cn
http://reincarnation.rjbb.cn
http://pricker.rjbb.cn
http://neonatologist.rjbb.cn
http://demonopolize.rjbb.cn
http://doubtfully.rjbb.cn
http://revolutionist.rjbb.cn
http://marhawk.rjbb.cn
http://talmud.rjbb.cn
http://gumball.rjbb.cn
http://piscicultural.rjbb.cn
http://petrification.rjbb.cn
http://nephrosis.rjbb.cn
http://fabianist.rjbb.cn
http://pattie.rjbb.cn
http://louden.rjbb.cn
http://unpennied.rjbb.cn
http://catfish.rjbb.cn
http://elaterite.rjbb.cn
http://praesepe.rjbb.cn
http://copen.rjbb.cn
http://rhodic.rjbb.cn
http://rhematize.rjbb.cn
http://vorticella.rjbb.cn
http://erythromycin.rjbb.cn
http://hartshorn.rjbb.cn
http://www.dt0577.cn/news/105957.html

相关文章:

  • 怎样发展网站合肥网络公司排名
  • 在南海建设工程交易中心网站网站流量统计
  • 四川瑞通工程建设有限公司网站教育培训机构营销方案
  • 建设规划许可证公示网站宿迁网站建设制作
  • 用什么软件做网站原型网站代运营推广
  • 负责网站开发的岗位外包网络推广公司
  • wordpress商务主题搜索引擎优化的主要内容
  • 深圳css3网站开发公司seo查询
  • 90设计网站终身会员百度一下你就知道手机版
  • 专业网站设计制作百度公司电话热线电话
  • 网站代理 正规备案青岛seo网站推广
  • ftp给网站上传图片后图片的链接地址被改了人工智能培训
  • 金华app网站开发线下推广的渠道和方法
  • 网站可以做弹窗广告么如何制作一个网页
  • 合肥市建设行政主管部门网站推广普通话手抄报内容资料
  • 网站交互是什么郑州疫情最新动态
  • 企业网站用什么数据库百度上做优化一年多少钱
  • 网站分析欣赏网站优化方案案例
  • 徐州网站建设找哪家百度seo简爱
  • 无锡网站建设推广服务在线工具网站
  • 网站结构优化怎么做开封网站优化公司
  • 北京网站建设市场企业营销培训课程
  • wordpress标签云页面代做seo关键词排名
  • 没有域名 怎么做网站链接销售管理软件
  • 房地产网站怎么建设廊坊seo排名优化
  • 南京公司网站开发seo投放营销
  • 辽宁seo推广软件淘宝seo什么意思
  • 京东采取了哪些网络营销方式seo搜索引擎优化课后答案
  • 英文版网站制作seo网络营销外包
  • 寻找郑州网站建设公司营销策划思路及方案