图一中有4个对象,分别是剧本,剧本导演,剧本角色,角色演员.
那么他们之间的关系是怎么样的呢?导演选择剧本,剧本存在角色,角色决定演员.
注:这边为了代码的整理,使用了lombok的@Data注解,这个注解 会给标识的类自动构建get,set方法以及无参的构造函数等.
- /**
- * 剧本类
- * @author 胖橘
- *
- */
- @Data
- public class Script {
- private Integer id;
- private Integer scriptName; //剧本名称
- }
- /**
- * 导演类
- * @author 胖橘
- *
- */
- @Data
- public class Regisseur {
- private Integer id;
- private String regisseurName;//导演名字
- private Integer scriptId; //剧本id
- }
- /**
- * 角色类
- * @author 胖橘
- *
- */
- @Data
- public class Role {
- private Integer id;
- private String roleName;//角色名称
- private Integer scriptId;//剧本id
- }
- /**
- * 演员类
- * @author 胖橘
- *
- */
- @Data
- public class Actor {
- private Integer id;
- private String actorName;//演员名字
- private Integer roleId;//角色名字
- }
- public class Test {
- public static void main(String[] args) {
- //创建<<知否剧本>>
- Script script=new Script();
- script.setId(1);
- script.setScriptName("知否");
-
- //创建剧本中的女主角明兰
- Role role=new Role();
- role.setId(1);
- role.setRoleName("明兰");
- role.setScriptId(1);
-
- //创建想拍这部剧本的导演
- Regisseur regisseur=new Regisseur();
- regisseur.setId(1);
- regisseur.setRegisseurName("张开宙");
- regisseur.setScriptId(1);
-
- //确定剧本女主角演员
- Actor actor=new Actor();
- actor.setId(1);
- actor.setActorName("赵丽颖");
- actor.setRoleId(1);
-
-
- }
- }
我们会发现Test中的例子,控制权是在剧本手中的,导演挑选了剧本,剧本控制了角色,角色控制了演员.
而SpringIOC做的事情 就是控制反转,也就是由导演去决定剧本,导演决定角色,导演去决定谁来演这部剧.
之前在剧本手中的控制,现在就到了导演手中了.这就是控制反转.
以上均摘自于<<精通Spring4.x企业应用开发实战>>