IOC编程思想详解与Spring框架的引入-----Spring框架

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();
}
}

你可能感兴趣的:(JAVA随手写,Spring框架,java,开发语言,spring,intellij-idea,eclipse,数据结构)