面向对象的聚合意味着什么?

实际上面向对象的思想课本上到处都有,如果是小程序的话、只有几把枪的情况下,面向对象的思想根本体现不出什么优势来,但三五百人的开发队伍,并且又是那种平台+应用的开发模式的话,这时的面向对象的思想才有用武之地:这是一种思想上的共识,有了这种思想,不管是平台开发人员还是应用开发人员才可以提高开发效率、减少通信成本、提高代码复用率:

举个例子,我们要创建一个OpenGL的特效类SomeEffect,常见的特效是粒子系统、飘带(飞机拉线、导弹飞行轨迹),目的就是创建逼真的场景。因为粒子系统和飘带均是特效,所以它们之间可以抽象出共同点并加以封装,就叫BaseEffect吧。于是,特效类聚合了粒子系统和飘带。在默认情况下,无论是粒子系统还是飘带都可以在不设置任何参数时能正常的创建、显示、销毁。问题的关键在于,现在需求来了,粒子系统默认情况下的1000个粒子不够逼真,用户想要生成100000粒子,这该如何?于是,开发人员查阅了SomeEffect的类图,知道了一件事:原来SomeEffect聚合了粒子系统和飘带,那我只需要根据SomeEffect提供的public方法把粒子系统的实例get出来,再进行一次强制类型转换就可以获得粒子系统对象,从而通过具体的粒子系统对象动态调整参数。

时间: 2024-11-05 10:21:27

面向对象的聚合意味着什么?的相关文章

ORM 是一种讨厌的反模式

本文由码农网 – 孙腾浩原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! (“Too Long; Didn’t Read.”太长不想看,可以看这段摘要 )ORM是一种讨厌的反模式,违背了所有面向对象的原则.将对象分隔开并放入被动的数据包中.ORM没有理由存在任何应用中,无论是小的网络应用还是涉及增删改查上千张表的企业系统.用什么来替代它呢?SQL对象(SQL-speaking objects). ORM如何工作 Object-relational mapping(ORM)是一种链

设计模式-UML类图的各符号含义(转)

UML类图的各符号含义 类图基本符号可拆分为虚线,箭头,实线,空心右三角,实心右三角,空心菱形和实心菱形.由这些基本的图形进行组合构成了类图的基本符号.这里要注意这几个符号的顺序,代表了类与类之间关系的耦合程 度.越向右耦合度越高. 其中虚线+箭头是表示即依赖的关系,实线+箭头表示关联的关系,虚线+空心右三角表示implements,实线+空心右三角表示的是泛化,即类的继承关系.实线+空心菱形表示的是聚合的关系,实线+实心菱形则表示 组合的关系. 另外一点是在看类图的时候要注意.类图的思想其实也

[设计模式]-UML类图的各符号含义

UML类图的各符号含义 类图基本符号可拆分为虚线,箭头,实线,空心右三角,实心右三角,空心菱形和实心菱形.由这些基本的图形进行组合构成了类图的基本符号.这里要注意这几个符号的顺序,代表了类与类之间关系的耦合程 度.越向右耦合度越高. 其中虚线+箭头是表示即依赖的关系,实线+箭头表示关联的关系,虚线+空心右三角表示implements,实线+空心右三角表示的是泛化,即类的继承关系.实线+空心菱形表示的是聚合的关系,实线+实心菱形则表示 组合的关系. 另外一点是在看类图的时候要注意.类图的思想其实也

java设计模式概述

1.1 什么是设计模式 Christopher Alexander说过:"每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心.这样,你就能一次又一次地使用该方案而不必做重复劳动" 一般而言,一个模式有四个基本要素: 1. 模式名称(pattern name) 一个助记名,它用一两个词来描述模式的问题.解决方案和效果.模式名可以帮助我们思考,便于我们与其他人交流设计思想及设计结果.找到恰当的模式名也是我们设计模式编目工作的难点之一. 2. 问题(problem)

GOF设计模式 之 引言

1. 设计模式定义 模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心思想,这样就能直接利用此方案,不必做重复劳动: GOF中的设计模式是对用来在特定场景下解决一般设计问题的类和相互通信的对象的描述: 2. 设计模式分类 GOF中共包含了23种设计模式,根据其目的可以将模式分为创建型.结构型和行为型三种: (1) 创建型: 创建型模式与对象的创建有关:创建型类模式将对象的部分创建工作延迟到子类,而创建型对象模式则将它延迟到另一个对象中: 包含抽象工厂.生成器.工厂方法(类).

SSAS下玩转PowerShell

 操作SSAS数据库的方法有很多,是否有一种可以方法可以通过脚本自动去做这些事呢,比如处理分区,创建备份以及监视SSAS的运行状况. 原文地址: http://www.mssqltips.com/sqlservertip/2937/using-powershell-for-sql-server-analysis-services-tasks--part-1/ PowerShell作为命令行工具来自动化处理SSAS任务就是一个不错的选择.因为是围绕SSAS处理任务的话题,所以阅读此篇需要具备一

MonkeyRunner源代码分析之启动

在工作中由于要追求完毕目标的效率,所以很多其它是强调实战.注重招式.关注怎么去用各种框架来实现目的.可是假设一味仅仅是注重招式.缺少对原理这个内功的了解,相信自己非常难对各种框架有更深入的理解. 从几个月前開始接触ios和android的自己主动化測试.原来是本着只为了提高測试团队工作效率的心态先行作浅尝即止式的研究,然后交给測试团队去边实现边自己研究.最后由于各种原因果然是浅尝然后就止步了,而自己终于也离开了上一家公司. 换了工作这段时间抛开全部杂念和曾经的困扰专心去学习研究各个框架的使用,逐

<2014 05 09> 程序员:从C++转到Java需注意的地方

最近想玩玩Android的APP开发,从C++角度来学习Java.Java可以说是一个优化精简版的C++,去除了底层C的很多特性.找了这篇文章. --------------------------------------------------------------------------------------------------------------------------------------- 写给程序员:从C++转到Java需注意的地方 1.Java在虚拟机上运行 Java

安卓开发之简单的短信操作模块

最近做了一个简单的短信操作模块,比较实用小巧.主要功能是可以发送短信(包括短信发送状态的提示),储存短信(可以用于短信列表显示等等),短信的储存可以用SQLite,不过觉得也就几十条上百条短信,用SQLite未免大材小用,还麻烦,于是决定用SharePreference结合对象序列化来做这个模块. 首先是短信实体类,为了复用,做成抽象类,再具体项目中使用只要继承该抽象类即可: public abstract class Message implements Serializable{ priva