【编程素质】编程思想总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunshineTan/article/details/82876424

1,数据结构和算法

【数据结构】排序算法
【数据结构】查找
【数据结构】树
【数据结构】图
【数据结构】数组
【数据结构】队列和栈
【数据结构】线性表:顺序表、单链表
【java学习】String字符串
【算法】电梯调度算法/磁盘扫描算法
【算法】剑指offer
【数据结构】斐波那契数列(Fibonacci sequence,黄金分割数列,兔子数列)

2,设计模式

【编程素质】多线程编程之设计模式

复合模式:三层架构、MVC、MVP、MVVM

3,编程方法

3.1 函数式编程(functional programming)

3.1.1 概念

是结构化编程的一种。将电脑运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。函数编程语言最重要的基础是λ演算(lambda calculus)。
java8引入了函数式编程概念。

3.1.2 与OOP对比

对象与对象之间的关系是面向对象编程首要考虑的问题,而在函数式编程中,所有的数据都是不可变的,不同的函数之间通过数据流来交换信息。

3.1.3 优点

在函数式编程中,由于数据全部都是不可变的,所以没有并发编程的问题,是多线程安全的。
代码可读性更强。

3.1.4 缺点

由于所有的数据都是不可变的,所以所有的变量在程序运行期间都是一直存在的,非常占用运行资源。
虽然现代的函数式编程语言使用了很多技巧比如惰性计算等来优化运行速度,但是始终无法与面向对象的程序相比,当然面向对象程序的速度也不够快。

3.2 面向对象编程(Object-oriented programming,缩写:OOP)

3.2.1 概念

具有对象概念的程序编程范型,同时也是一种程序开发的方法。它可能包含数据、属性、代码与方法。对象则指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性,对象里的程序可以访问及经常修改对象相关连的数据。在面向对象程序编程里,计算机程序会被设计成彼此相关的对象。

3.2.2 优点

系统更灵活、更容易扩展,而且成本较低。

3.2.3 缺点

面向对象编程以数据为核心,所以在多线程并发编程中,多个线程同时操作数据的时候可能会导致数据修改的不确定性。
面向对象虽然开发效率高但是代码的运行效率比起面向过程要低很多。

3.2.4 面向对象三大特性:封装,继承,多态

3.3 面向方面编程(Aspected Oriented Programming,缩写:AOP)

3.3.1 概念

偏重业务处理过程的某个步骤或阶段,强调降低模块之间的耦合度,使代码拥有更好的移植性。

3.3.2 特点

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

3.3.3 优点

i>更易模块化
AOP将程序分解成各个方面或者说关注点。这使得可以模块化,相当横向上分切了。它可以解决OOP和过程化方法不能够很好解决的横切(crosscut)问题,如:事务、安全、日志等横切关注
ii>AOP有助于提高系统可维护性

扫描二维码关注公众号,回复: 3449566 查看本文章

3.3.4 实现方式

AOP是一种设计模式,Spring提供了一种实现。
Spring 1.2版本中通过ProxyFactoryBean来实现aop,即通过动态代理来实现的,Aspect必须继承MethodBeforeAdvice,MethodAfterAdvice等。
Spring 2.0 AOP需要改的是FBI 这个类,而且它也不需要再实现某些接口
三使用标注(@AspectJ)实现AOP

3.3.5 与OOP对比

也可以说 AOP 是面向业务中的动词领域, OOP 面向名词领域。
核心业务还是要OOP来发挥作用,与AOP的侧重点不一样,前者有种纵向抽象的感觉,后者则是横向抽象的感觉, AOP只是OOP的补充,无替代关系。

4,Java编码约定

猜你喜欢

转载自blog.csdn.net/SunshineTan/article/details/82876424