面向对象 函数式设计

Posted by NotGeek on January 3, 2018

lambda 式函数式编程的一种。

1
var a = new ArrayList<Integer>();

面试跳槽都差不多。

往期视频
  • Java 9
  • Spring Boot系列
  • Spring Cloud 系列
  • 高并发系列
  • Spring 系列
  • 面向对象设计

议题

  • 面向对象设计陷阱
  • 函数是编程基础
  • 函数式设计
  • 函数式使用场景
  • 问答互动

面向对象设计陷阱

  • 我们经常听说
    • 一切都是对象
    • OOP 更符合人类的思考方式
    • 面向接口编程,高内聚、低耦合
    • 不断地重构,实现代码复用
    • 设计模式很重要
  • 为什么 OOP 更符合人类的思考方式?

    答:把数据封装成一个对象,任何一个物体都可以用对象来封装。可量化的东西可以用属性来表达。封装、继承、多态。

  • Java 是面向接口编程吗?

  • 代码复用?

    答:代码具有原子性,逻辑单元不可再分割,工程里边会有一个 StringUtils 就是典型的重复发明轮子。开源软件不让你重复发明轮子,然后他自己发明轮子。无论业务还是代码都有重合的部分。低耦合,让代码尽量减少有交集。依赖与 Apache common 的包。

    现实工作中,忙的没有时间休息,哪有什么时间重构。都是边边角角的东西。

  • GG 23 设计模式。

    答:

我们是否思考

  • 对象是否面面俱到?
  • OOP 会不会更复杂?
  • OOP 与代码复用是否存在必然联系?
  • 怎样才算是高内聚、低耦合
  • 设计模式是否束缚了你我的想象?

有原生类型,所以并不是全部都是对象。基础类型,是基本类型。

DDD 领域设计模式。想法很好,

TDD 测试驱动开发。

函数式设计和面向对象有点冲突。但是 Java 一起了

OOP 有些会变复杂。

OOP

Utils 方法都是面向过程的

1
2
3
//常见: 工厂、抽象工厂、单例模式、共享(享元)模式、代理模式(静态、动态)、委派模式
//常用: 装饰器模式、策略模式、模板模式、创建者模式、观察者模式、责任链模式
//陌生: 访问者模式、调停者模式、桥接模式

单例模式

  • JVM 级别、ClassLoader 级别
  • 容器级别

tomcat 级别,netty 级别,

函数式编程基础

  • Lambda 表达式
    • Java 8 方法引用
    • Java 8 构造器引用
    • Java 8 函数式接口

函数式设计

  • Function 设计
  • Supplier 设计
  • Consumer 设计
  • Predicate 设计