Spring:工厂模式哪里解耦了?】的更多相关文章

菜瓜:我一定是太菜了,为什么别人说Spring屏蔽了new关键字创建对象就很丝滑?我完全get不到这个操作的好处啊,我自己写new它也很香啊 水稻:emmmm,换个角度想啊,如果把现在用的注解@Autowired@Resource给干掉,你想在Controller里面引用Service,你会怎么做?new 一个? 菜瓜:对啊,我new一个怎么了,不也可以用? 水稻:那如果,我另一个Controller里面也要用同一个Service,是不是再new一个?有很多个这种Controller是不是new…
目录 1. 啥是耦合.解耦? 2. jdbc程序进行解耦 3.传统dao.service.controller的程序耦合性 4.使用工厂模式实现解耦 5.工厂模式改进 6.结语 @ 1. 啥是耦合.解耦? 既然是程序解耦,那我们必须要先知道啥是耦合,耦合简单来说就是程序的依赖关系,而依赖关系则主要包括 1. 类之间的依赖 2. 方法间的依赖 比如下面这段代码: public class A{ public int i; } public class B{ public void put(A a)…
本文摘自:李刚 著 <轻量级 Java EE企业应用实战 Struts2+Spring+hibernate整合开发> 在Spring 中大量使用的以下两种设计模式:工厂模式和单态模式. 工厂模式可将Java 对象的调用者从被调用者的实现逻辑中分离出来,调用者只需关心被调用者必须满足的规则(接口) ,而不必关心实例的具体实现过程.这是面向接口编程的优势,能提高程序的解耦,避免所有的类以硬编码方式耦合在一起. 如果所有的类直接耦合,极易形成"骨牌效应",假如B 类调用了A 类,…
工厂模式,顾名思义,如同工厂一样,你把原材料放入工厂中,出来的是成品,而你并不需要知道工厂里做了什么.代码中也类似,把主要参数放入一个工厂里,返回的是处理好的数据,我们并不需要工厂里做了什么,只需要知道需要传入的值和返回的值.个人认为设计模式只能在实战中更好的理解,当前水平有限,欢迎大家交流 简单工厂模式 <?php namespace Factory\SimpleFactory; class SimpleFactory { public function createProduction():…
Java工厂模式解耦 -- 理解Spring IOC 最近看到一个很好的思想来理解Spring IOC,故记录下来. 资源获取方式 主动式:(要什么资源都自己创建) 被动式:(资源的获取不是我们创建,而是交给一个容器来创建和设置) 工厂模式获取资源 主要思想: 使用工厂模式以及Java反射机制来获取资源(类). 使用容器(Map)来存储所有资源,当需要的时候由工厂从容器中取出. 使用读取配置文件的方式向容器中注入组件(类). 作用: 降低组件之间的耦合性. 代码 com.lin.dao下: pa…
菜鸟D在项目中遇见一个比较纠结的高耦合,所以就想办法来解耦.情况是这样的:系统通过用户选择treeview控件的节点判断调用不同的处理,这些处理中某些东西又是类似的.同事的建议是采用简单工厂,耦合就耦合吧,反正treeview节点基本是不会变化的.(能偷懒就偷懒吧) 菜鸟D有些偏执,想找些方法来解耦.于是就学习了这个几种方法,虽然不一定用的上,多学一点总是好的. 首先说简单工厂,例子是一个已经二到死的计算器. 简单工厂由三种角色组成:工厂类角色(creator),抽象产品类角色(product,…
使用工厂模式解耦. 一.需求场景: 某一层功能需要改动,但其他层代码不变 实现类1:MyDaoImpl查询自己的数据库. ====改为====> 实现类2:MyDaoImpl2从其它地址得到数据. 二.步骤: 1.创建一个BeanFactory类,Bean工厂 service层: private MyDao dao = BeanFactory.getBean(); class BeanFactory{ public static Object getBean(){ Class clazz = C…
Spring IOC与工厂模式 PS:本文内容较为硬核,需要对java的面向对象.反射.类加载器.泛型.properties.XML等基础知识有较深理解. (一)简单介绍 在讲Spring IOC之前,有必要先来聊一下工厂模式(Factory Pattern).工厂模式可将Java对象的调用者从被调用者的实现逻辑中分离出来.工厂模式是Java中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式.在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过…
一.前言    在日常的开发过程,经常使用或碰到的设计模式有代理.工厂.单例.反射模式等等.下面就对工厂模式模拟spring的bean加载过程进行解析,如果对工厂模式不熟悉的,具体可以先去学习一下工厂模式的概念.在来阅读此篇博文,效果会比较好. 二.知识储备 在介绍本文的之前,不了解或不知道如何解析XML的,请先去学习一下XML的解析.掌握目前主要的几种解析XML中的一种即可,以下博文说明了如何采用Dom4J解析XML文件的,接下去的例子也是常用Dom4J来解析XML.博文地址参考:http:/…
Spring预备知识(适合中小型项目) 作用:集成和管理其他框架 工厂模式: A  a  = new A( ); 将类所要创建的对象写入工厂,统一进行管理 package com.spring; public class TestSimpleFactoryPattern { /** * 工厂模式:利用工厂模式调用两个类 */ public static void main(String[] args) { // TODO Auto-generated method stub CarFactory…
1.静态工厂模式其他对象不能直接通过new得到某个类,而是通过调用getInstance()方法得到该类的对象这样,就可以控制类的产生过程.顺带提一下单例模式和多例模式:  单例模式是指控制其他对象获得该对象永远只有同一个对象  而多例模式则是根据需要从某个具体集合中获取所需的对象 import java.util.ArrayList; import java.util.List; public class Car implements Moveable{ private static Car…
我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂模式和代理模式. IOC是工厂模式参考:设计模式-工厂模式-场景以及优缺点-目的就是应对变化 (国江面试回答的) AOP代理模式参考:设计模式-代理模式(Proxy) 参考:深入理解Java反射+动态代理 IOC就是典型的工厂模式,通过sessionfactory去注入实例. AOP就是典型的代理模式的体现. 可以参考:Spring 学习 3- A…
spring通过工厂模式解决页面耦合问题…
利用工厂模式实现serveice和dao层的解耦,这样就可以不用在service层实例化dao层的对象,当dao层代码发生改变的时候(数据库实现发生改变)直接修改配置文件就不用改变service层的代码. 配置文件:dao.properties UserDao="com.dao.UserDaoJdbcImp" 如果是oracle实现就可以修改配置文件就行 源代码:DaoFactory.java package com.demo; import java.io.IOException;…
一.什么是简单工厂模式 设计模式的核心是“分工”,通过分工将对象与职责划分的更细化,进而提升系统设计的可扩展性,使其更容易维护. 开闭原则:对扩展开放,对修改关闭:要增加一个新的处理逻辑,可以开一个新的类,不要在老的上面修改 依赖倒转原则:依赖关系从具体转向抽象,也就是说:A调用B,不是直接调用B的实现,而是依赖B的接口 迪米特法则:类尽量少的与其他类发生关系,或者产生依赖,以此来使扩展可以更容易 工厂模式中的三种:简单工厂模式.工厂方法模式.抽象工厂模式:实现了创建者和调用者的分离,调用者不需…
IOC的单例模式--Bean Spring中的bean是根据scope来决定的. scope有4种类型: 1.singleton:单例模型,表示通过Spring容器获取的该对象是唯一的.常用并且默认. 2.prototype:多例模型,表示通过Spring容器获取的对象都是不同的(类似于Java基础中new出来的对象地址是唯一的). 3.reqeust:请求,表示在一次http请求内有效. 4.session:会话,表示在一个用户会话内有效. 1.创建一个对象 public class User…
在springboot的各个依赖包下,我们经常看到META-INF/spring.factories这个文件.spring.factories文件的内容基本上都是这样的格式: # Initializers org.springframework.context.ApplicationContextInitializer=\ org.springframework.boot.autoconfigure.SharedMetadataReaderFactoryContextInitializer,\…
使用类加载器去加载文件 定义getBean的方法 运行测试方法报错. 在工厂类里面打印输出BeanPath 删除dao的实现类 没有dao的实现类.再次运行程序.编译不报错.运行时报错 以上就是工厂模式解耦…
spring的bean的创建原理就是框架利用反射创建出实例对象 工厂模式:工厂帮我们创建对象:有一个专门帮我们创建对象的类,我们把这个类叫做工厂类. 例如:Plane plane = PlaneFactory.getPlane(String name); 工厂有分为静态工厂和实例工厂. 静态工厂: 也即是调用方法的时候,直接是xxxFactory().getXxx(); 他的实例对象的创建在static方法中. public static Plane getPlane(String name)…
以前写的代码 mapper层 public interface PersonMapper { void selectPersonList(); } public class PersonMapperImpl implements PersonMapper { @Override public void selectPersonList() { System.out.println("PersonMapperImpl selectPersonList"); } } service层 pu…
目录 引入 简单工厂 抽象工厂 Spring的bean工厂 模拟Spring工厂实现 模拟IOC 引入 假设有一个司机, 需要到某个城市, 于是我们给他一辆汽车 public class Demo { public static void main(String[] args) { Car car = new Car(); car.run(); } } public class Car { public void run(){ System.out.println("汽车正在向前跑...&quo…
先说下工厂模式的特性 1.对于调用者来说,影藏了复杂的逻辑处理过程,调用者只关心执行结果. 2.工厂要对结果负责,保证生产出符合规范的产品. Git代码地址  https://github.com/wujiachengSH/WjcFactoryDemo 下述的3个栗子分别为简单工厂,工厂方法,抽象工厂 先来个栗子看看什么是工厂把 首先是简单工厂模式 声明一个动物工厂 package com.wjc.Factory; public interface Animal { String eat();…
一.简单工厂模式 简单工厂模式(Simple Factory Pattern)由一个工厂对象决定创建哪一种产品类的实例,简单工厂模式适用于工厂类负责创建对象较少的情况,且客户端只需要传入工厂类的参数,对于如何创建对象不关心. public interface IBlog { //写随笔 public void write(); } public class JavaBlog implements IBlog { @Override public void write() { System.out…
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习! 涉及到的知识点总结如下: 为什么使用接口? 接口和抽象类的区别 简单工厂模式总结 Java中new和newInstance的区别 Java的Class.forName(xxx); Java里创建对象的几个方式总结 Java类加载机制总结 Java WEB的三层架构和MVC的关系 工厂方法模式总结 抽象工厂模式总结 一道面试题的分析 一个服务提供者框架的学习 接口的另一常用法:策略模式 参考资料 先看这样一个场景:某个果园里现在有…
原创文章,同步发自作者个人博客,转载请注明出处 http://www.jasongj.com/design_pattern/abstract_factory/ 抽象工厂模式解决的问题 上文<工厂方法模式>中提到,在工厂方法模式中一种工厂只能创建一种具体产品.而在抽象工厂模式中一种具体工厂可以创建多个种类的具体产品. 抽象工厂模式 抽象工厂模式介绍 抽象工厂模式(Factory Method Pattern)中,抽象工厂提供一系列创建多个抽象产品的接口,而具体的工厂负责实现具体的产品实例.抽象工…
摘要:本文介绍了简单工厂模式的概念,优缺点,实现方式,以及结合Annotation和反射的改良方案(让简单工厂模式不简单).同时介绍了简单工厂模式(未)遵循的OOP原则.最后给出了简单工厂模式在JDBC中的应用 原创文章.同步自作者个人博客http://www.jasongj.com/design_pattern/simple_factory 简单工厂模式使用案例 有一种抽象产品--汽车(Car),同时有多种具体的子类产品,如BenzCar,BMWCar,LandRoverCar.类图如下 作为…
简单工厂模式 简单工厂模式是类的创建模式,又叫做静态工厂方法模式.简单工厂模式由一个工厂对象决定生产出哪一种产品类的实例. 为什么要使用简单工厂模式 原因很简单:解耦. A对象如果要调用B对象,最简单的做法就是直接new一个B出来.这么做有一个问题,假如C类和B类实现了同一个接口/继承自同一个类,系统需要把B类修改成C类,程序不得不重写A类代码.如果程序中有100个地方new了B对象,那么就要修改100处. 这就是典型的代码耦合度太高导致的"牵一发动全身".所以,有一个办法就是写一个工…
创建Bean实例的方式: 1) 通过构造器(有参或无参) 方式: <bean id="" class=""/> 2) 通过静态工厂方法 方式: <bean id="" class="工厂类" factory-method="静态工厂方法"/> 注: 工厂类实例没有创建 3) 通过实例工厂方法(非静态方法) 方式: <bean id="factory" cla…
要想正确理解设计模式,首先必须明白它是为了解决什么问题而提出来的. 设计模式学习笔记 --Shulin 转载请注明出处:http://blog.csdn.net/zhshulin 1.概念 工厂模式定义:实例化对象,用工厂方法取代new操作.达到解耦的目的(避免硬编码耦合).工厂方法模式是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式. 工厂模式是我们最经常使用的模式了,著名的Jive论坛 ,就大量使用了工…
[学习难度:★★★★☆,使用频率:★★★★★]  工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题,但由于工厂方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销.此时,我们可以考虑将一些相关的产品组成一个"产品族",由同一个工厂来统一生产,这就是我们本文将要学习的抽象工厂模式的基本思想. 1 界面皮肤库的初始设计 Sunny软件公司欲开发一套界面皮肤库,可以对Java桌面软件进行界面美化.为了保护版权,该皮肤库源代码不打…