编写一个简单的工厂模式java,java工厂模式的好处

  编写一个简单的工厂模式java,java工厂模式的好处

  如何解决写爬虫IP受阻的问题?立即使用。

  (推荐教程:java入门)

  一、简单工厂模式

  工厂的简单定义:提供创建对象实例的功能,不考虑其具体实现。创建的实例的类型可以是接口、抽象类或具体类。

  实现汽车接口

  公共接口车{

  string getName();

  }奔驰类

  公共级奔驰执行车{

  @覆盖

  公共字符串getName() {

  还‘奔驰’;

  }

  }宝马类

  公共级宝马弈车{

  @覆盖

  公共字符串getName() {

  还‘宝马’;

  }

  }简单工厂,既能生产宝马又能生产奔驰

  公共类SimpleFactory {

  公共汽车getCar(字符串名称){

  if(name . equals( BMW ){

  还新宝马();

  } else if(name . equals( benz ){

  归还新奔驰();

  }否则{

  System.out.println(对不起,这个牌子的车不能生产);

  返回null

  }

  }

  }测试类

  公共类SimpleFactoryTest {

  公共静态void main(String[] args){

  simple factory simple factory=new simple factory();

  Car car=simpleFactory.getCar(宝马);

  system . out . println(car . getname());

  }

  }测试结果

  按照宝马简单工厂的定义,用户只要产品,不关心产品是怎么生产的。看起来很完美。但是你想想,这个世界上有生产一切的工厂吗?

  显然是不存在的。每个汽车品牌都有自己的生产工厂,自己的生产技术。映射到spring框架,我们有许多种类的bean需要生成。如果仅仅依靠一个简单的工厂来实现,有几个如果.否则,我们是否必须嵌套在工厂类中?

  而且我们在代码里生产一辆车,出来的时候只是新的,实际操作的时候不知道需要进行多少操作。加载、注册等操作都会体现在工厂类中,所以这个类会变得无序,不方便管理。所以每个品牌都应该有自己的生产班。

  因为专一,所以专业。这时,工厂法出现了。

  二、工厂方法模式

  工厂接口

  //定义一个工厂接口,其功能是生产汽车。

  公共接口工厂{

  car getCar();

  }奔驰工厂

  公共类BenzFactory实现工厂{

  @覆盖

  公共汽车getCar() {

  归还新奔驰();

  }

  }宝马工厂

  公共类BMWFactory实现工厂{

  @覆盖

  公共汽车getCar() {

  还新宝马();

  }

  }测试类

  公共类工厂测试{

  公共静态void main(String[] args){

  factory BMW factory=new BMW factory();

  system . out . println(BMW factory . get car()。getName());

  factory benz factory=new benz factory();

  system . out . println(benz factory . get car()。getName());

  }

  }测试结果

  德国宝马汽车公司(Bavarian Motor Works)

  根据上面的代码,奔驰可以看到不同品牌的汽车由不同的工厂生产,这似乎是完美的。但是让我们来看看测试类。当一个人想买一辆宝马车(假设没有卖家),那么他就得去宝马工厂给他生产一辆。过几天他想买一辆奔驰的车,就要去奔驰工厂请人生产,这无疑增加了用户的操作复杂度。那么有没有方便用户操作的方式呢?这就是抽象工厂出现的时候。

  三、抽象工厂模式

   抽象工厂

  公共抽象类AbstractFactory {

  受保护的抽象汽车getCar();

  //这段代码是动态配置的功能。

  //以固定模式委托

  公共汽车getCar(字符串名称){

  如果(‘宝马’。equalsIgnoreCase(name)){

  返回新的BmwFactory()。getCar();

  }else if(奔驰。equalsIgnoreCase(name)){

  返回新的BenzFactory()。getCar();

  }else if(奥迪)。equalsIgnoreCase(name)){

  返回新的AudiFactory()。getCar();

  }否则{

  System.out.println(此产品无法生产);

  返回null

  }

  }

  }默认工厂

  公共类DefaultFactory扩展AbstractFactory {

  private Audi factory default factory=new Audi factory();

  公共汽车getCar() {

  返回default factory . get car();

  }

  }宝马工厂

  公共类BMWFactory扩展AbstractFactory {

  @覆盖

  公共汽车getCar() {

  还新宝马();

  }

  }奔驰工厂

  公共类BenzFactory扩展AbstractFactory {

  @Override public Car getCar() {

  归还新奔驰();

  }

  } 测试类

  公共类AbstractFactoryTest {

  公共静态void main(String[] args) {

  default factory factory=new default factory();

  system . out . println(factory . get car( Benz )。getName());

  }

  }测试结果

  根据上面的代码,奔驰可以看到用户需要一辆车,只需要找到默认工厂提出自己的要求(来车参数)就可以得到自己想要的产品,而不需要根据产品寻找不同的生产工厂,方便用户操作。

  注:对于设计模式,有人嗤之以鼻,有人奉若神明,但我是认可的。

  根据我肤浅的理解,设计模式的经典特征是,它解决了写代码的人和调用代码的人双方的痛苦。不同的设计模式只适用于不同的场景。至于用不用,怎么用,就需要注意了。

  但不应该为了用而用。细微之处留给大家慢慢品味。

  更多编程知识请访问:编程课程!java的以上三种工厂模式是什么?更多详情请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: