2017-03-02学习笔记

知识点

一、static

public class Spike
{
    public static void main(String[] args)
    {
        Counter a = new Counter();
        System.out.println(a.increment());
        System.out.println(a.anotherIncrement());
        Counter b = new Counter();
        System.out.println(b.increment());
    }
}
class Counter
{
    private static int count = 0;
    public int increment()
    {
        return count++;
    }
    public int anotherIncrement()
    {
        return ++count;
    }
}

count是静态变量,为所有对象所共享,因此不管a.increment()还是b.increment()都会使count持续增加。 increment()方法返回当前count值,然后count增加1 antoherIncrement()方法让count增加1,然后返回count值 第一次a.increment()返回值为0,此时count值为1 第二次a.anotherIncrement()先让count+1再返回,返回值为2 第三次b.increment()先返回count当前值2,然后count+1

二、AOP面向切面

AOP的概念是Aspected Oriented Programming 面向方面编程。 好处:AOP将程序分解成各个方面或者说关注点。这使得可以模块化,相当横向上分切了。它可以解决OOP和过程化方法不能够很好解决的横切(crosscut)问题,如:事务、安全、日志等横切关注。 实现AOP有几种方式: 1.Spring 1.2版本中通过ProxyFactoryBean来实现aop,即通过动态代理来实现的,Aspect必须继承MethodBeforeAdvice,MethodAfterAdvice等 2.Spring 2.0 AOP需要改的是FBI 这个类,而且它也不需要再实现某些接口 3.三使用标注(@AspectJ)实现AOP AOP 和 OOP的区别:

```html
 1. 面向方面编程 AOP 偏重业务处理过程的某个步骤或阶段,强调降低模块之间的耦合度,使代码拥有更好的移植性。  
 2. 面向对象编程 (oop) 则是对业务分析中抽取的实体进行方法和属性的封装。
 ```

也可以说 AOP 是面向业务中的动词领域, OOP 面向名词领域。 AOP 的一个很重要的特点是源代码无关性,也就是说如果我们的系统中引用了 AOP 组件,即使我们把该组件去掉,系统代码也应该能够编译通过。要实现这一点,可以使用动态 proxy 模式。

三、jdbc桥接模式

桥接模式: 定义 :将抽象部分与它的实现部分分离,使它们都可以独立地变化。 意图 :将抽象与实现解耦。 桥接模式所涉及的角色

  1. Abstraction :定义抽象接口,拥有一个Implementor类型的对象引用
  2. RefinedAbstraction :扩展Abstraction中的接口定义
  3. Implementor :是具体实现的接口,Implementor和RefinedAbstraction接口并不一定完全一致,实际上这两个接口可以完全不一样Implementor提供具体操作方法,而Abstraction提供更高层次的调用
  4. ConcreteImplementor :实现Implementor接口,给出具体实现 Jdk中的桥接模式:JDBC JDBC连接 数据库 的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不动,原因就是JDBC提供了统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了四、抽象类 抽象类和普通类有三点区别: 1)抽象方法必须为public和protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。 2)抽象类不能用来创建对象,但是它可以有构造方法,用来帮助子类实例化。 3)如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为abstract类。五、接口 接口的主要特点 1)接口中的成员变量默认都是public、static、final类型的,必须被显示初始化。 2)接口中的方法默认都是public、abstract类型的。 3)接口中只能包含public、static、final类型的成员变量和public、abstract类型的成员方法。 4)接口没有构造方法,不能被实例化。 5)一个接口不能实现另一个接口,但它可以继承多个其他接口。 6)接口必须通过类来实现它的抽象方法。 7)与子类继承抽象父类相似,当类实现了某个接口时,它必须实现接口中所有的抽象方法,否则这个类必须被定义为抽象类。 8)一个类只能继承一个直接的父类,但能实现多个接口。六、抽象类和接口的区别 1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract方法; 2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的; 3)接口中不能含有静态代码块以及静态方法,而抽象类尅有静态代码块和静态方法; 4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。 5)抽象类中的方法子类必须全部实现,不然子类也是抽象类,而接口中的抽象方法子类必须全部实现,是可选择实现的。 6)抽象类是一种模板设计模式,而接口时一种行为规范。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java编程

Java抽象类与接口的区别

很多常见的面试题都会出诸如抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口这样的问题。本文我们将仔细讨论这些话题。

97411
来自专栏Android 研究

Retrofit解析8之核心解析——ServiceMethod及注解2

这个方法内部很简单,主要就是通过遍历annotations,内部调用parseParameterAnnotation来获取ParameterHandler对象并...

602
来自专栏你不就像风一样

Jsoup+FastJson制作新闻数据接口-Demo

经常用到 编写出来直接拿来用 这个适合在服务端结合servlet来做接口:需要下载jsoup+fastjson两个包 Jsoup使用手册:http:/...

582
来自专栏分享达人秀

Activity间数据传递方法汇总

在Activity间传递的数据一般比较简单,但是有时候实际开发中也会传一些比较复杂的数据,本节一起来学习更多Activity间数据的传递。 一、常用数据...

3466
来自专栏菩提树下的杨过

scala 学习笔记(06) OOP(下)多重继承 及 AOP

一、多继承 上篇trait中,已经看到了其用法十分灵活,可以借此实现类似"多重继承"的效果,语法格式为: class/trait A extends B wit...

18110
来自专栏云瓣

JS 异步系列 —— Promise 札记

823
来自专栏Java与Android技术栈

用kotlin打印出漂亮的android日志(三)——基于责任链模式打印任意对象

SAF-Kotlin-log 是一个Android的日志框架,这几天我抽空重新更新了一下代码。

651
来自专栏JAVA高级架构

我们为什么要使用 AOP

前言 一年半前写了一篇文章Spring3:AOP,是当时学习如何使用Spring AOP的时候写的,比较基础。这篇文章最后的推荐以及回复认为我写的对大家有帮助的...

3177
来自专栏Android干货

Java数据解析---JSON

3377
来自专栏我就是马云飞

设计模式二十四章经之单例设计模式

1003

扫描关注云+社区