• 互联网轻量级框架SSM查缺补漏第二天


      简言:第一天没咋看,因为看的时候已经是下午了。今天上午也因为工作上的事没咋看,本来想按照天去写的,但是内容会太散吧。我决定把整块的内容放在一起写了。天数啥的,就那样把。

       还有,我只是言简意赅的去总结一下知识点,而不是全面的介绍。

    第二章 Java设计模式

      2.1Java反射技术

      反射机制之前我特意去看了一次,觉得当时看的还是挺细的,基本没发现看不懂的地方,这里也就不写了。我之前也写过一个随笔,写的不是很全,但是有些东西不需要都写在纸上。

      2.2动态代理模式和责任链模式

      动态代理模式的意义在于生成一个占位(代理对象),来代理真实对象,从而控制真实对象的访问。

      为什么要设置代理?作用在于:在对真实对象进行访问之前或之后,要加入对应的逻辑,或者根据其他规则控制是否使用真实对象。

      书上介绍了JDK动态代理和CGLIB动态代理,我就不介绍了,搜索一下有很多易懂的例子,主要还是设计模式的思想。

      拦截器:

      拦截器接口的设计室给开发者使用的,开发者只要知道拦截器接口的方法、含义和作用即可,不需要知道动态代理是怎么实现的。

      注:这个例子我写了一部分代码,所以不结合我这本书不一定能看懂,还是不要看了。但是例子的意义可以了解下。

      例如:定义拦截器接口Interceptor,包含三个方法,before,around,after。

    public boolean before(Object proxy,Object target,Method method,Object[] args){
        //作为一个逻辑判断,书上的例子返回false
        System.out.print("反射方法前逻辑");
        return false;        
    }
    public void after(Object proxy,Object target,Method method,Object[] args){
        System.out.print("反射方法后逻辑");    
    }
    public void around(Object proxy,Object target,Method method,Object[] args){
        //在before方法返回false时执行
        System.out.print("取代了被代理对象的方法");    
    }

      接口会作为参数传入动态代理中,然后把动态代理中的对应参数传入interceptor的对应方法中。

      这个例子的意义就是用interceptor的before方法控制了是否要反射原有对象,before返回true时,反射原有对象,false是执行around方法,最后都统一执行after。

      总结:

        设计者把拦截器接口暴露给开发者使用,让动态代理的逻辑在开发者的视野中“消失”。拦截器的作用是进一步简化动态代理的使用方法,使程序变得更简单。

      责任链模式:

    当一个对象在一条链上被多个拦截器拦截处理使,我们把这种设计模式称为责任链模式。简单易懂。

      2.3观察者模式

      观察者模式又称为发布订购模式。是对象的行为模式(一个对象的变化引起观察者需要做出改变)。观察者模式定义了一种一对多的依赖关系。让对个观察者对象同时监视被观察者的状态,当被观察者的状态发生变化时,会通知所有观察者并让其自动更新自己。

      比如商家有一些产品,它和电商合作,当产品有变化的时候,电商也必须做出调整。就拿出新产品Product举例。(这是书上的例子,我这里就按我的理解来记了)

    定义产品列表ProductList类,有两个主要属性,产品列表productList,电商列表observerList。当集合productList新增元素product后,就应该图同时observerList中的所有电商,书上是定义了一个notifyObserver的方法。

      2.4工厂模式和抽象工厂模式

      简单工厂模式(普通工厂模式):一个工厂对应着各种产品,通过多态,按照产品编号可以得到不同的产品。总的说就是多态的体现。

      抽象工厂模式:一个抽象工厂的接口,衍生出多个类型的工厂,然后再各自生产产品。客户只需要知道有这么一个工厂,他能生成我所需要的产品就好。

      2.5建造者模式

      我自己的理解呀,就是在复杂对象的创建中,这个对象可能由很多其他对象组合成。那么当构建这个对象时就可以理工建造者模型。

      (例子是套票问题,套票是由成人票,有座儿童票,无座儿童票,老年片,军人及军人家属票中的几种构成)

      有一个Helper类,此类中定义了一些构造对象的方法(创建成人票,儿童票等票的对象并返回),创建套票的时候只需要根据需要,利用Helper类中的方法来得到想要的种类的票的对象就好。

  • 相关阅读:
    mysq 日期相减
    说说时间观与时间管理——北漂18年(71)
    ionic之切换开关
    ionic之单选框
    SELECT ... LOCK IN SHARE MODE和SELECT ... FOR UPDATE locks在RR模式下可以看到最新的记录
    14.5.2.3 Consistent Nonlocking Reads 一致性非锁定读
    14.5.2.2 autocommit, Commit, and Rollback
    14.5.2 事务隔离级别
    对于唯一索引使用唯一条件搜索, InnoDB 只锁定找到的index record,不是它之前的区间
    mysql explain 解释
  • 原文地址:https://www.cnblogs.com/shiboinfo/p/10156474.html
Copyright © 2020-2023  润新知