返回介绍

基于元类的扩展

发布于 2024-01-29 22:24:14 字数 717 浏览 0 评论 0 收藏 0

尽管手动扩展有效,但在较大的程序中,如果可以对整个一组类自动应用这样的修改,可能会更好。通过这种方式,我们避免了对任何给定的类修改扩展的机会。此外,在单独位置编写扩展更好地支持了未来的修改——集合中的所有类都将自动接收修改。

满足这一目标的一种方式就是使用元类。如果我们在元类中编写扩展,那么声明了元类的每个类都将统一且正确地扩展,并自动地接收未来做出的任何修改。如下的代码展示了这一点:

这一次,两个客户类都使用新的方法扩展了,因为它们是执行扩展的元类的实例。运行的时候,这个版本的输出和前面相同,我们没有做代码所做的修改,我们只是重构它们以便更整齐地封装修改:

注意,这个示例中的元类仍然执行相当静态的工作:把两个已知的方法添加到声明了元类的每个类。实际上,如果我们所需要做的总是向一组类添加相同的两个方法,我们也可以将它们编写为常规的超类并在子类中继承它们。然而,实际上,元类结构支持更多的动态行为。例如,主体类也可以基于运行时的任意逻辑配置:

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文