首页 > 编程语言 > 详细

spring + mybatis 学习随笔之一(思想)

时间:2016-02-29 21:25:50      阅读:224      评论:0      收藏:0      [点我收藏+]

  作为微软阵营的coder,最近开始接触java,刚开始,各种不适应、心里各种骂,IDE不好用啊、基础jar包的功能不好用啊之类的,当然了相比.Net平台来说,这是事实,慢慢的发现java阵营其实挺不错,感觉java阵营非常的“自由”,很多的东西都是免费的,不仅免费,源码都有;

  废话不扯,进入正题,要学什么东西最好从理解它的思想开始,spring也是这样,spring的核心思想大家都知道:IOC(依赖注入或者叫控制反转)、AOP(面向切面)。

  什么是依赖注入呢,为什么叫依赖注入呢,看下面代码:

public class A {

	public methodX()
	{
		System.out.println("我是业务逻辑!");
	}
}

  

public class classB {

	public void methodB()
	{
		classA objA=new classA();
		objA.methodX();
	}
}

  从上面的代码来看,classB需要调用classA的方法,这就是说classB依赖classA,classA就是classB的依赖;那么这是常规的写法,这么写最直接,初学者都喜欢,但是这么写,classB和classA的耦合度高,比如说现在还有一个类classC,代码如下:

public class classC {

	public void methodX()
	{
		System.out.println("我是业务逻辑的扩展!");
	}
}

  如果现在需要用classC换掉classA,就得动classB的代码(通篇改代码,会被leader骂死,除非leader自己也这样写),那么怎么写合理呢(话说架构师大半辈子都在研究如何解耦),这么写:

public interface interfaceX {

	void methodX();
}

  先定义个接口,如上;

public class classA implements interfaceX {

	public void methodX()
	{
		System.out.println("我是业务逻辑!");
	}

}

  实现该接口;

public class classC implements interfaceX {

	public void methodX()
	{
		System.out.println("我是业务逻辑的扩展!");
	}
}

  下面是关键:

public class myFactory {
	
	public static interfaceX getObj()
	{
		String className="classA";//此处从配置文件中读取需要创建的类名称,,懒得写了,略
		interfaceX obj=null;
		try
		{
			switch(className)
			{
			case "classA":
			{
				obj = (classA)myFactory.class.forName(className).newInstance();
			}
			case "classC":
			{
				obj = (classC)myFactory.class.forName(className).newInstance();
			}
			//...........需要改变时在此处添加个分支就OK了
			default : 
				obj = new classA();
			
			}
		}
		catch(Exception ex)
		{
			
		}
		return obj;

	}

}

  定义个生成对象实例的工厂,如上;

public class classB {

	public void methodB()
	{

		interfaceX obj=myFactory.getObj();
		obj.methodX();
	}
	
}

  这样耦合就降低了,就不用动classB的代码了;这样,classB的依赖(classA)就不是写死的了,就是通过反射“注入”进来的,如果需要,可以很轻松的换掉(通过修改配置文件),当然了,接口(interfaceX)不能变;

 

spring + mybatis 学习随笔之一(思想)

原文:http://www.cnblogs.com/wuchuang/p/5228736.html

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