package com.bjpowernode.spring6.client; import com.bjpowernode.spring6.web.UserAction; public class Test { public static void main(String[] args) { UserAction userAction = new UserAction(); userAction.deleteRequest(); //1.OCP开闭原则,OCP是最基本的,其他原则都要为此让路 //什么是OCP?软件7大开发原则最基本的原则,开闭原则 //对什么开?对扩展开 //对什么闭?对修改关闭 //最基本的原则是,只要在拓展功能时没有修改以前写好的代码,就是符合OCP原则,一旦为新功能修改了原有代码就不符合OCP原则 //当系统功能拓展动了此前写好的代码,此前所有的程序都需要重新测试,非常麻烦 //2.DIP原则,依赖倒置原则 //上层服务实现依赖下层,违背了依赖倒置原则,一层一层都写死了,无法进行修改 //要面向接口面向抽象,不要面向具体编程,降低程序的耦合度,提高扩展性 //什么叫做违背依赖倒置原则,上依赖下,就是违背依赖倒置原则,只要下层一改动,上层就受到牵连,这就是违背依赖倒置原则 //控制反转思想编程思想解决问题,什么是控制反转,控制反转:IOC(Inversion of Control),一种设计模式,把具体对象的创建权和对象之间维护的关系交出去 //不在程序中采用硬编码的方式创建对象,不需要硬编码来维护层级之间对象的关系 //Spring框架是一个实现了IOC思想的容器,可以通过反射机制创建对象,和维护对象之间的关系 //控制反转的实现方式有多种,其中最重要的是依赖注入DI(Dependency Injection) //控制反转是思想,依赖注入是具体实现方法,对象A和B之间的关系靠注入的方式维护 //依赖注入DI,又包括两种,set注入(基于set方法的赋值),构造方式注入(执行构造方法赋值) //依赖:A对象和B对象的关系 //注入:通过注入,使得A和B对象产生关系 //SSM三大框架,Spring,SpringMVC,Mybatis //非侵入式,就是不依赖其他的API和类来实现的,方便单元测试 //每一个被Spring管理的对象我们都称为bean,Spring容器管理了每一个Bean的生命周期,可以配置每一个bean创建 } }
package com.bjpowernode.spring6.client;
import com.bjpowernode.spring6.web.UserAction;
public class Test
{
public static void main(String[] args)
{
UserAction userAction = new UserAction();
userAction.deleteRequest();
//1.OCP开闭原则,OCP是最基本的,其他原则都要为此让路
//什么是OCP?软件7大开发原则最基本的原则,开闭原则
//对什么开?对扩展开
//对什么闭?对修改关闭
//最基本的原则是,只要在拓展功能时没有修改以前写好的代码,就是符合OCP原则,一旦为新功能修改了原有代码就不符合OCP原则
//当系统功能拓展动了此前写好的代码,此前所有的程序都需要重新测试,非常麻烦
//2.DIP原则,依赖倒置原则
//上层服务实现依赖下层,违背了依赖倒置原则,一层一层都写死了,无法进行修改
//要面向接口面向抽象,不要面向具体编程,降低程序的耦合度,提高扩展性
//什么叫做违背依赖倒置原则,上依赖下,就是违背依赖倒置原则,只要下层一改动,上层就受到牵连,这就是违背依赖倒置原则
//控制反转思想编程思想解决问题,什么是控制反转,控制反转:IOC(Inversion of Control),一种设计模式,把具体对象的创建权和对象之间维护的关系交出去
//不在程序中采用硬编码的方式创建对象,不需要硬编码来维护层级之间对象的关系
//Spring框架是一个实现了IOC思想的容器,可以通过反射机制创建对象,和维护对象之间的关系
//控制反转的实现方式有多种,其中最重要的是依赖注入DI(Dependency Injection)
//控制反转是思想,依赖注入是具体实现方法,对象A和B之间的关系靠注入的方式维护
//依赖注入DI,又包括两种,set注入(基于set方法的赋值),构造方式注入(执行构造方法赋值)
//依赖:A对象和B对象的关系
//注入:通过注入,使得A和B对象产生关系
//SSM三大框架,Spring,SpringMVC,Mybatis
//非侵入式,就是不依赖其他的API和类来实现的,方便单元测试
//每一个被Spring管理的对象我们都称为bean,Spring容器管理了每一个Bean的生命周期,可以配置每一个bean创建
}
}
package com.bjpowernode.spring6.dao; //持久层 public interface UserDao { void deleteById(); }
package com.bjpowernode.spring6.dao;
//持久层
public interface UserDao
{
void deleteById();
}
package com.bjpowernode.spring6.dao.impl; import com.bjpowernode.spring6.dao.UserDao; public class UserDaoImplForMySQL implements UserDao { @Override public void deleteById() { System.out.println("Mysql正在删除用户信息"); } }
package com.bjpowernode.spring6.dao.impl;
import com.bjpowernode.spring6.dao.UserDao;
public class UserDaoImplForMySQL implements UserDao
{
@Override
public void deleteById()
{
System.out.println("Mysql正在删除用户信息");
}
}
package com.bjpowernode.spring6.dao.impl; import com.bjpowernode.spring6.dao.UserDao; public class UserDaoImplForOracle implements UserDao { @Override public void deleteById() { System.out.println("Oracle正在删除用户信息"); } }
package com.bjpowernode.spring6.dao.impl;
import com.bjpowernode.spring6.dao.UserDao;
public class UserDaoImplForOracle implements UserDao
{
@Override
public void deleteById()
{
System.out.println("Oracle正在删除用户信息");
}
}
package com.bjpowernode.spring6.service; //业务层 public interface UserService { void deleteUser(); }
package com.bjpowernode.spring6.service;
//业务层
public interface UserService
{
void deleteUser();
}
package com.bjpowernode.spring6.service.impl; import com.bjpowernode.spring6.dao.UserDao; import com.bjpowernode.spring6.dao.impl.UserDaoImplForMySQL; import com.bjpowernode.spring6.dao.impl.UserDaoImplForOracle; import com.bjpowernode.spring6.service.UserService; public class UserServiceImpl implements UserService { // private UserDao userDao = new UserDaoImplForMySQL(); // private UserDao userDao = new UserDaoImplForOracle(); private UserDao userDao; @Override public void deleteUser() { //处理删除用户信息的业务,调用持久层 userDao.deleteById(); //处理业务的代码 } public void saveUser() { } }
package com.bjpowernode.spring6.service.impl;
import com.bjpowernode.spring6.dao.UserDao;
import com.bjpowernode.spring6.dao.impl.UserDaoImplForMySQL;
import com.bjpowernode.spring6.dao.impl.UserDaoImplForOracle;
import com.bjpowernode.spring6.service.UserService;
public class UserServiceImpl implements UserService
{
// private UserDao userDao = new UserDaoImplForMySQL();
// private UserDao userDao = new UserDaoImplForOracle();
private UserDao userDao;
@Override
public void deleteUser()
{
//处理删除用户信息的业务,调用持久层
userDao.deleteById();
//处理业务的代码
}
public void saveUser()
{
}
}
package com.bjpowernode.spring6.web; import com.bjpowernode.spring6.service.UserService; import com.bjpowernode.spring6.service.impl.UserServiceImpl; public class UserAction { // private UserService userService = new UserServiceImpl(); private UserService userService; public void deleteRequest() { userService.deleteUser(); } }
package com.bjpowernode.spring6.web;
import com.bjpowernode.spring6.service.UserService;
import com.bjpowernode.spring6.service.impl.UserServiceImpl;
public class UserAction
{
// private UserService userService = new UserServiceImpl();
private UserService userService;
public void deleteRequest()
{
userService.deleteUser();
}
}