OOP vs FP

187 阅读1分钟

面向对象编程 (OOP) 和函数式编程 (FP) 是两种不同的编程范式。下面是它们的区别、相似点以及使用 JavaScript 的代码示例。

1. 区别:

OOP (面向对象编程):

  • 基于对象的概念,将数据和操作数据的方法组合在一起。
  • 强调可变状态、对象和方法。
  • 使用类来创建对象,并通过继承来共享和重用代码。

FP (函数式编程):

  • 基于函数的概念,将操作作为一等公民。
  • 强调不可变状态和纯函数。
  • 使用高阶函数和函数组合来创建复杂的操作。

2. 相似点:

  • 都是为了解决软件开发中的问题并提高代码的可读性、可维护性和可重用性。
  • JavaScript 支持这两种编程范式,因此开发者可以根据需要混合使用。

3. 代码示例:

OOP 示例:

class Animal {
    constructor(name) {
        this.name = name;
    }

    speak() {
        console.log(`${this.name} makes a noise.`);
    }
}

class Dog extends Animal {
    speak() {
        console.log(`${this.name} barks.`);
    }
}

const dog = new Dog('Rex');
dog.speak();  // 输出: Rex barks.

FP 示例:

const animals = [
    { name: 'Rex', type: 'dog' },
    { name: 'Mia', type: 'cat' }
];

const speak = (animal) => {
    if (animal.type === 'dog') {
        return `${animal.name} barks.`;
    } else if (animal.type === 'cat') {
        return `${animal.name} meows.`;
    } else {
        return `${animal.name} makes a noise.`;
    }
}

console.log(speak(animals[0]));  // 输出: Rex barks.