JavaScript函数式场景下,Farm函数区分动物类型的最优模式?
问题:农场函数根据动物类型执行不同操作
假设有一个接收对象参数的函数Farm(animal1, animal2, ...),这些对象是通过以下两个工厂方法创建的Sheep或Cow:
function Sheep(id) { function noise() {console.log('baa');} return { my_id : id, noise } } function Cow(id) { function noise() {console.log('moo');} function swish_tail () {} return { my_id : id, noise, swish_tail } }
现在需要让Farm根据动物对象的类型执行不同操作(如统计各类动物数量、先让所有绵羊发出叫声再让奶牛叫等),可选方案如下:
- 为每种动物使用原型,在
Farm中检查对象原型? - 基于只有
Cow拥有swish_tail()方法这一特征判断? - 让
Sheep和Cow通过函数式继承自Animal工厂方法,并为Animal添加type属性?
理想状态下,应尽可能让Farm不了解各动物的实现细节。
内容的提问来源于stack exchange,提问作者stuwilmur
相关产品推荐
相关产品推荐

