设计模式解读之结合Java实际应用

创建型模式:

这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。

结构型模式:

这些设计模式关注类和对象的组合。 继承的概念被用来组合接口和定义组合对象获得新功能的方式。

行为型模式:

这些设计模式特别关注对象之间的通信。

J2EE 模式:

这些设计模式特别关注表示层。这些模式是由 Sun Java Center 制定的。

理解:当有一个新需求的时候,我们是通过拓展来实现客户需求,而不是通过修改原有代码

六大原则: 单一职责,里式替换,依赖倒置,接口隔离,迪米特,开闭

img

框架和架构和设计模式,设计重用,代码重用!高内聚低耦合!

依赖倒置:高层模块不应该依赖底层模块,二者都应该依赖其抽象;抽象不应依赖细节,细节应该依赖抽象

Mother: narrate(IReader reader) Interface IReader – Book,NewsPaper

Spring 框架中都用到了哪些设计模式?

Spring 框架中使用到了大量的设计模式,下面列举了比较有代表性的:

1. 工厂模式: Spring 本身就是一个超级大工厂,Spring 容器负责创建所有 Bean,因此 Spring 框架本身就是从工厂模式扩展而来的。

抽象工厂简单地说是工厂的工厂,抽象工厂可以创建具体工厂,由具体工厂来产生具体产品。 抽象工厂模式有个缺陷,就是当用户需求改变的时候,需要修改代码,然后需要重新编译,最好是将用户需求(可以看做用户订单)放在一个配置文件里面,由代码根据配置文件来创建相应的工厂以及实例,这样当用户需求发生改变的时候,只需要修改配置文件(产品订单)即可。

Spring IOC容器是一个抽象工厂,既可以管理Bean实例,还可以管理工厂实例。ApplicationContext.xml可以看作是系统的订单,容器根据这个订单生产相应的Bean。

2. 单例模式: 容器中 singleton Bean 都是单例的。 双重加锁

3. 代理模式: Spring AOP 就是基于代理模式的,由于所有 AOP 代理和目标对象之间的关系就是代理和目标之间的关系。

其他理解:

策略模式: Spring 的事务控制、资源访问都是策略模式的典型应用。其中事务控制的策略接口就是PlatformTransactionManager,该接口定义了事务控制的 3 个核心方法,Spring 为该策略接口提供了大量的策略实现类;资源访问的策略接口是 Resource 接口,Spring 为该接口提供了大量的策略实现类。

工厂模式: 总共三种,在俄罗斯方块中,将对象交给工厂类(设计成单例?)来生成,客户端代码成功与被调用对象的实现类分离。框架中大量的工厂,例如mybatis中的SqlSessionFactory,BeanFactory,抽象工厂就是工厂的工厂,将工厂再细分出来

模板模式: 画swing的面板,构造方法初始化 各个面板,长宽通用的数据,方法, 代码重用

还有BaseServlet,进行相同的方式进行权限判断,记录日志和处理异常,在各个子类中只 是完成各自的业务逻辑代码,以及请求装发方式,可以使用return 字符串来处理

单例模式: 双重加锁,通过双重判断来保证单列设计模式在多线程中的安全性,

并且它在性能方面提高了很多,懒汉,饿汉,减少创建Java实例所带来的系统开销,例如:spring的bean,windows应用程序:回收站

代理模式: spring框架的代理,静态代理:一个接口就要一个代理,动态代理运用反射,能够根据传 进来的方法在运行时决定调用哪个方法

通过代理类的代理,接口和实现类之间可以不直接发生联系,而可以在运行期(Runtime) 实现动态关联。

Hibernate框架里的延迟加载就是代理模式的应用。

Spring框架中AOP实现也是代理模式的体现。

客户端代码并不知道真正的被代理对象,客户端代码面向接口编程,它仅仅持有一个被代 理对象的接口。

门面模式: 业务逻辑组件来封装DAO组件也是典型的门面模式——每个业务逻辑组件都是 众多DAO组件的门面,系统的控制器类无需直接访问DAO组件。

适配器模式: 一个接口有很多个抽象方法,我们只要实现其中一个:

可以通过一个抽象类适配器实现这个接口,然后只要继承这个类就可以了对你要的方法重写

俄罗斯方块中swing也是有用的,可以了解了适配器模式,何的模式都有优缺点,适配器模式也不例外,如上面的抽象适配器就有一个明显的缺点,就是将一个接口替换成了抽象类,优点就是可以不用实现我们不需要实现的方法,而只关心我们必须要实现的那些方法,缺点就是由接口变成了类,使用可能会受限,因为java不支持多重继承,但可以实现多个接口。

观察者模式: swing的监听,Java事件机制的底层实现就是观察者模式。完全可以把观察者接口理解成事件监听接口,而被观察者对象也可当成事件源来处理。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Apple_Web

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值