Design Patterns - Elements of Reusable Object-Oriented Software
(设计模式 - 可复用的面向对象软件元素)的书
该书首次提到了软件开发中设计模式的概念
GOF总结了JavaSE开发中常见的23种设计模式,可以分为3大类:
创建型模式、结构型模式、行为型模式
4.JavaEE模式
JavaEE设计模式特别关注表示层,如MVC模式(MVC Pattern)
数据访问对象模式DAO(Data Access Object Pattern)
前端控制器模式(Front Controller Pattern)
5.Spring应用总体概述
6.Spring的核心思想(就是工厂模式)
不重复发明轮子理论
锤子理论
7.OOP
核心是面向抽象编程,面向抽象编程的核心是面向接口
a.IUSerDao接口
public interface IUserDao {
void save(UserMBean user);
}
b.UserDaoImpl实现类
public class UserDaoImpl implements IUserDao {
@Override
public void save(UserMBean user) {
}
}
接口的实现可能有多个,如何实现在多个接口具体实现之间进行切换
工厂模式
c.DaoFactory工厂
这是一种因为只有一种具体实现的退化写法
不是真正GOF提出的工厂设计模式
静态工厂方法[不是GOF的工厂模式]
public class DaoFactory {
public static IUserDao getUserDao(String type) {
if ("oracle".equals(type)) {
return new OracleUserDaoImpl();
}
if ("mysql".equals(type)) {
return new MysqlUserDaoImpl();
}
return new UserDaoImpl();
}
}
package org.wpf.fac;
public class Test {
public static void main(String[] args) {
IColor c = (IColor) BeanFactory.getBean("color");
c.fill();
IShape s = (IShape) BeanFactory.getBean("shape");
s.draw();
}
}
package org.wpf.spr;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
@SuppressWarnings("deprecation")
public class Test {
public static void main(String[] args) {
// 读取配置文件
Resource r = new ClassPathResource("applicationContext.xml");
// 获取工厂
BeanFactory fac = new XmlBeanFactory(r);
IColor c = (IColor) fac.getBean("color");
c.fill();
}
}
4.Spring的IoC容器将面向接口的编程代价降到了最低
C.IoC控制反转
1.Spring概述
Spring是一个轻量级的控制反转IoC/DI依赖注入和面向切面AOP的开源容器框架
是一个开源的Java/Java EE全功能栈full-stack的应用程序框架
以Apache许可证形式发布,它由Rod Johnson创建
它是为了解决企业应用开发的复杂性而创建的
2002年Rod Johnson在他的Expert One-On-One Java EE Design and Development
一书中首次发布了这个框架,并奠定了作者的大师地位
该框架也可以移植到.NET的环境下
Spring框架本身并没有强制实行任何特别的编程模式
在Java社区里,Spring作为EJB模型之外的另外一个选择甚至是替代品而广为流行
从设计上看,Spring给予了Java程序员许多的自由度
但同时对业界常见的问题也提供了良好的文档和易于使用的方法
Spring框架的核心功能在任何Java应用中都是适用的
在基于Java企业平台上的web应用中,大量的拓展和改进得以形成
为此,Spring获得了广泛的欢迎,并被许多公司认可为具有战略意义的重要框架
Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情
[声明式事务管理 SessionBean会话bean用于封装业务处理逻辑
EntityBean实体bean用于封装数据访问逻辑{BMP是bean管理的持久化
CMP容器管理的持久化} MessageDrivenBean消息驱动bean
用于实现异步的逻辑处理]
然而,Spring的用途不仅限于服务器端的开发
从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益
简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式解决方案)
轻量级开源框架
2.发展历程
2000年Spring框架最开始的部分是由Rod Johnson于2000年
为伦敦的金融界提供独立咨询业务时写出来的
在2002年编著的《Expert one on one J2EE design and development》一书中
#include<iostream>
#include<cassert>
using namespace std;
template<class T, int SIZE = 50>
class Stack{
private:
T list[SIZE];//数组存放栈的元素
int top;//栈顶位置
public:
Stack(
Gson提供了丰富的预定义类型适配器,在对象和JSON串之间进行序列化和反序列化时,指定对象和字符串之间的转换方式,
DateTypeAdapter
public final class DateTypeAdapter extends TypeAdapter<Date> {
public static final TypeAdapterFacto