比方说,我们在Nodejs中有一些框架,比如laravel。你有这样的事情:
class Model {
getTable(){}
edit(){let table = this.getTable();//edit...}
insert(){}
delete(){//some code}
}
另一个孩子班:
class User extends Model {
getTable() { return 'users' }
}
这是OOP版本。我重用了编辑,插入和删除功能。
如何通过函数式编程实现重用功能。
我更喜欢JavaScript for demo despide它不是完全FP语言。
谢谢
答案 0 :(得分:1)
似乎另一个原因是您可以使用部分应用程序获得可重用性。
const createPerson = ( { create } ) => ( { name, age } ) => create ( {
name: name.toLowerCase (),
age: age <= 0 ? 1 : age
} )
const db = new Map()
const inc = ( () => {
let i = 0
return () => ++i
} ) ()
const createOps = db => ( {
getById: id => db.get ( id ),
create: data => ( db.set ( inc(), data ), data )
} )
// _createPerson is bound to a specific
// data mapper so this function is already
// agnostic to underlying tech if it's spread
// across the codebase
const _createPerson = createPerson ( createOps ( db ) )
const person = _createPerson ( { name: 'Matías', age: 33 } )
console.log ( person )
答案 1 :(得分:0)