Closed jpuncle closed 10 years ago
感谢你的建议,我们在下一个版本会仔细考虑。
接口的确存在一些冗余
arale的Class实现很精巧,但个人感觉一个接口即可,即只需:
Class.create(properties)
具体来说,可以这样:
Class.create({
Extends: ParentClass,
Implements: ImplClass,
Statics: StaticProps,
constructor: Ctor,
propName: propValue,
methodName: method
});
原因如下: 1、单一接口,简单方便。一个create全部搞定,不用那么多相似的接口。 2、SomeClass.extend/implement这样的接口有污染SomeClass之嫌。不如直接用Extends/Implements属性替代。 3、用constructor替代initialize简化构造函数,实例化效率也会随之大大提升。 4、Class(fn)基本没有太大用处,也可以省略。
@jpuncle Class.create(parent, props)
一般用的什么场景?我觉得是可以用 Class.create(properties)
代替
先说一下背景,仔细的阅读了
Class
的代码,目前它暴露的接口有:我很喜欢这些接口,我还知道存在
Implement
和Extends
:我很喜欢使用了 mixin 方式的
Implement
,但是Extends
让我比较困惑,Extends
应该用在哪儿呢?我仔细分析了下代码Class.create(parent, props)
父类:parent > props.Extends > Class
Class.extend()
父类:only Class
SomeClass.extend()
父类:only SomeClass
发现,只有在
Class.create()
中Extends
的设置才会有用,那么我还要它干嘛? 作为一个 Class 类的使用者,我应该完全用不到Extends
才对,我仅仅需要parent
就够了。或许我们可以这样设计:对外完全不暴露
Extends
,或者去掉Extends
Extends
是我们的Class
的实现需要的,而不是使用Class
的用户需要的去掉
Class.extend()
,只保留SomeClass.extend()
在去掉
Extends
的基础上,Class.extend(props) 等价于 Class.create(props)这样,我们常见的用法就会是这样:
是不是简单很多呢?