美文网首页
设计模式解读之结合Java实际应用

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

作者: Apple_Boy | 来源:发表于2019-07-05 09:41 被阅读0次

    创建型模式:

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

    结构型模式:

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

    行为型模式:

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

    J2EE 模式:

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

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

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

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

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

    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 代理和目标对象之间的关系就是代理和目标之间的关系。

    4. 策略模式: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事件机制的底层实现就是观察者模式。完全可以把观察者接口理解成事件监听接口,而被观察者对象也可当成事件源来处理。

    相关文章

      网友评论

          本文标题:设计模式解读之结合Java实际应用

          本文链接:https://www.haomeiwen.com/subject/ojxshctx.html