首页 > 编程语言 > 详细

sping 梳理1--Spring 的框架结构、简单工厂设计模式、工厂方法模式

时间:2021-01-22 19:25:12      阅读:30      评论:0      收藏:0      [点我收藏+]

1、Spring 的框架结构

技术分享图片

 

 

 

 

Data Access/Integration层包含有JDBC、ORM、OXM、JMS和Transaction模块。

Web层包含了Web、Web-Servlet、WebSocket、Web-Porlet模块。

AOP模块提供了一个符合AOP联盟标准的面向切面编程的实现。

Core Container(核心容器): 包含有Beans、Core、Context和SpEL模块。

Test模块支持使用JUnit和TestNG对Spring组件进行测试。

 

 

 

2、工厂设计模式

(1)简单工厂设计模式

简单工厂模式最大的优点在于实现对象的创建和对象的使用分离,将对象的创建交给专门的工厂类负责,

但是其最 大的缺点在于工厂类不够灵活,增加新的具体产品需要修改工厂类的判断逻辑代码,而且产品较多时,工厂方法代 码将会非常复杂。

 

public interface Car {
/**
* 汽车运行的接口方法
*/
    void run();
}

 

public class Benz implements Car {
public void run() {
  System.out.println("奔驰 is running!");
  }
}

 

public class Bike implements Car {
  public void run() {
    System.out.println("我只有自行车!");
}
}

 

public class Bmw implements Car {
  public void run() {
  System.out.println("宝马 is running!");
  }
}

 

工厂:CarFactory

public class CarFactory {
  public static Car getCar(String type){
    if("benz".equalsIgnoreCase(type)){
    //其中可能有很复杂的操作
      return new Benz();
    }else if("bmw".equalsIgnoreCase(type)){
    //其中可能有很复杂的操作
      return new Bmw();
    }else {return new Bike();
    }
  }
}

 

测试:

public class Client {
  public static void main(String[] args) {
    Car bmw = CarFactory.getCar("bmw");
    bmw.run();
    Car benz = CarFactory.getCar("benz");
    benz.run();
  }
}

 

 

(2)工厂方法模式

我们说过java开发中要遵循开闭原则,如果将来有一天我想增加一个新的车,那么必须修改CarFactory,就不太灵 活。解决方案是使用工厂方法模式。

为每一个车都构建成一个工厂

 

 

public interface Factory {
/**
* 统一的创建方法
* @return
*/
  Car create();
}

 

 

然后针对每一个产品构建一个工厂方法

public class BenzFactory implements Factory {
  public Car create() {
    //中间省略一万行代码
    return new Benz();
  } }

 

public class BmwFactory implements Factory {
  public Car create() {
    //中间省略一万行代码
    return new Bmw();
  }
}

 

public class BikeFactory implements Factory {
  public Car create() {
    //中间省略一万行代码
    return new Bike();
  }
}

 

 

应用场景

public class Client {
  public static void main(String[] args) {
    Factory benzFactory = new BenzFactory();
    Car benz = benzFactory.create();
    benz.run();
    Factory bmwFactory = new BmwFactory();
    Car bmw = bmwFactory.create();
    bmw.run();
  }
}

 

 

好处:

此模式中,通过定义一个抽象的核心工厂类,并定义创建产品对象的接口,创建具体产品实例的工作延迟到其工厂 子类去完成。这样做的好处是核心类只关注工厂类的接口定义,而具体的产品实例交给具体的工厂子类去创建。当 系统需要新增一个产品是,无需修改现有系统代码,只需要添加一个具体产品类和其对应的工厂子类,使系统的扩 展性变得很好,符合面向对象编程的开闭原则。

 

缺点:

工厂方法模式虽然扩展性好,但是增加了编码难度,大量增加了类的数量,所以怎么选择还是看实际的需求。

 

sping 梳理1--Spring 的框架结构、简单工厂设计模式、工厂方法模式

原文:https://www.cnblogs.com/Master-Sun/p/14314804.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!