http://jack.lifegoo.com/?p=8
设计模式是编程语言能力弱的表现(Patterns are signs of weakness in programming languages)
http://blog.plover.com/2006/09/11/index.html
按照这篇文章的分析,就是这么一回事情。
一篇文章有许多评论,一个文件夹有许多文件,一个公司有许多人。。。在这类一对多的情形中,我们往往都需要统计评论数,文件数,人数。这样的情况反复出现,难道不应该有一种“模式”来统一处理吗?
一个帖子(post)有许多评论(comments):
class Post < ActiveRecord::Base
has_many :comments
end
class Comment < ActiveRecord::Base
belongs_to :post,:counter_cache=>true
end
每增加一个评论,则帖子的评论数应该增加一,若删除一个评论,则评论数应该减少一。
counter_cache=>true这个命令,就是告诉ror按照上面的规则去做事情。
我们只需要处理评论的创建删除等等就可以了,不必去关心评论数的处理(ror帮你完成了)
由此可见,RoR与其说是一种框架,不如说是一种增强了的编程语言:把上面的反复出现的情况,以“模式”的形式融入了RoR中,用一个简单的counter_cache=>true命令,就搞定了。
分享到:
相关推荐
设计模式不是具体的代码或库,而是经验总结,为常见的编程问题提供了一套标准的描述语言和解决框架。以下是对给定文件中提到的一些设计模式及其相关知识点的详细解释: 1. **模式的定义**:模式是一种在特定上下文...
Perl,全称“Practical Extraction and Reporting Language”,是一种高级的、通用的、解释型的、动态的编程语言。它的设计融合了多种语言的特点,尤其在文本处理和系统管理方面表现出色。Perl因其强大的正则表达式...
例如,通过阅读Windows内核的反汇编代码,可以学习到大量的系统级编程技巧和设计模式。 ### 学习资源 《天书夜读》这本书提供了一个从基础知识到实践应用的学习路径。以下是该书第一章节的主要内容概览: #### 第...
它涵盖了对问题的理解、分析,选择合适的算法,运用编程语言将解决方案转化为可执行的代码,以及调试和优化程序的能力。这些能力的培养需要跨越多个学科,如数据结构、算法、操作系统、计算机网络等,因此,程序设计...
2. 传统教学模式问题:传统教学模式侧重语法讲解,缺乏程序设计概念、思路与方法的讲解,导致学生难以将理论知识应用于实际编程。 3. 实验教学缺陷:验证性实验缺乏联系性,不能让学生了解如何编写一个完整的实用...
在解决这些复杂问题的过程中,往往需要多种编程语言和技术的协同作用。Microsoft Visual Basic (VB) 和 Matlab 作为两种广泛使用的工具,在各自领域内具有独特的优势。然而,它们在某些方面也存在局限性,如 VB 在...
Go语言,又称Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的编程语言。自2009年发布以来,它迅速获得了开发者们的喜爱,尤其在云计算、分布式系统和微服务领域应用广泛。本教程将深入探讨...
JavaScript是一种广泛应用于Web开发的动态、弱类型、基于原型的脚本语言,它不仅支持函数式编程,还具有强大的面向对象编程能力。面向对象编程(Object-Oriented Programming,简称OOP)是JavaScript中的一项核心...
- **多重分类**:在某些面向对象语言中,允许一个类同时继承多个父类的能力,这种方式可以提供更高的灵活性,但也可能增加复杂性。 ### 结论 通过对上述内容的详细介绍,我们可以看到软件工程分析模式涉及到了软件...
首先,Java作为一种编程语言,自1995年美国Sun Microsystems公司推出以来,就以其通用性、高效性、跨平台性和安全性,成为当今最流行的编程语言之一。它被广泛应用于多个平台和领域,成为很多高校计算机类专业的核心...
吴恩达的机器学习课程是全球范围内广受欢迎的在线课程,其编程作业设计得既具有挑战性又富有启发性,旨在帮助学生掌握从数据预处理、模型选择到训练与评估等各个环节。 这个压缩包中的“zgl_resource”可能是一个...
C语言作为计算机科学与技术领域的基础编程语言,其教学模式对高校学生的能力培养起着至关重要的作用。传统的“一刀切”教学模式已经无法满足不同层次学生的学习需求,因此,多层次差异化教学模式应运而生,并被广泛...
这种设计模式更接近现实世界的模型,使代码更加结构化和易于理解。 2. 平台无关性:Java的“一次编写,到处运行”特性得益于Java虚拟机(JVM)。JVM使得Java程序可以在任何安装了JVM的平台上运行,促进了跨平台应用...
- 编程语言基础:熟悉至少一种编程语言,如Java、C++或Python,理解其语法、内存管理及面向对象特性。 - 设计模式:了解常见的设计模式,如单例、工厂、观察者、装饰器等,以及何时使用它们。 2. LeetCode: - ...
C语言是一种过程性的编程语言,融合了高级语言的面向过程特性和低级语言的硬件紧密联系的优点,具有语言简洁、运算符丰富、数据类型多样、可以直接访问物理地址等特点,因此在系统软件和应用程序开发中都得到了广泛...
PLC课程设计是学习和掌握PLC应用的重要实践环节,旨在让学生熟悉PLC的工作原理、编程语言以及实际控制系统的设计。 本课程设计中,学生将面临一系列实际的PLC控制系统设计任务,包括但不限于花样喷水池、全自动...
课程考核制度也需改革,不再单纯依赖期末考试成绩,而是采用多元化评价方式,包括平时表现、小组项目、编程竞赛等,全面评估学生的学习成果和技能水平。这有助于激发学生自主学习和团队协作的积极性。 此外,课后...
1. 可编程输入/输出单元(I/O单元):作为芯片与外界电路的接口,其设计为可编程模式,允许根据需要调整与外界的电平标准、阻抗特性以及输出驱动电流的大小。 2. 基本可编程逻辑单元:这是FPGA的核心部分,主要由...