上升到企业级编程的时候,总会听到有人在谈论编程模式之类的话语,在没接触之前确实被忽悠得晕头晕脑的,也许正如马云说的,百分之九十的知识是拿来忽悠人的,不过肯定是忽悠不懂的人咯。好了,转如正题,谈谈本人对编程模式的一点看法吧,主要针对依赖注入模式。
依赖注入,简单点说就是采用分离逻辑层与显示层的基本思想来设计代码结构,一种普遍的方法是利用接口作中间人,然后具体实现类去实现接口,交给他人使用时具体实现类的代码细节并不公开,使用者只须知道调用哪个方法可以获得他想要的服务即可。另一种方法是利用构造器实现对象注入,在交付他人使用的类的构造器中传入具体服务的实现类的实例对象,并保存相关信息。还可以使用设值传入,通过传入的参数去创建服务实例对象。
无论是利用接口还是构造器去接收参数和构造子,目的都是为了让提供给他人使用的接口或类具有通用性以及尽量降低使用类与具体服务实现类的耦合度,从而实现代码的可扩展和可重用。对于专业术语上说的Dependency Injection和Service Locator模式,就我理解是这个意思,而设值注入与构造子注入也就对应于我所理解的传参数还是传对象的意思。具体的思维模式本人觉得还是写写代码更好理解一些,用文字表达的总是太过抽象,比较难以理解,以下是我的代码测试。
public interface Study {
public void study();
}
//Study接口
public class College_student implements Study{
//声明只占一个实例对象
private static College_student cs;
//实现接口方法
public void study() {
System.out.println("I'm a college student.");
}
//声明私有化构造器,不允许外界创建对象
//private College_student(){}
public static Study GetCollege_student(String s){
if(s=="College"){
cs = new College_student();//创建一个实例
System.out.println("我是传值创建的");
return cs;
}
return null;
}
//返回一个对象实例
public static Study GetCollege_student(){
cs = new College_student();//创建一个实例
return cs;
}
}
//College_student类,实现了Study接口
public class Main_test {
/**
* @param 测试接口知识
*/
public static void main(String[] args) {
Study cs = new Study() {
@Override
public void study() {
System.out.println("haha");
}
};//内部类,即实现一个接口,将它当成实现类使用
Study cs1 = College_student.GetCollege_student();
Study cs2 = College_student.GetCollege_student("College");
cs.study();
cs1.study();
cs2.study();
}
}
//主函数
1575

被折叠的 条评论
为什么被折叠?



