原文如下:
组合带来了极大的灵活性。新类的成员对象通常都被声明为private,使得使用新类的客户端程序员不能访问它们。这也使得你可以在不干扰现有客户端代码的情况下,修改这些成员。也可以在运行时修改这些成员对象。以实现动态修改程序的行为。下面将要讨论的继承并不具备这样得灵活性,因为编译器必须对通过继承而创建的类施加编译时的限制。
红字部分不明白,用多态的话继承不是也可以在不干扰现有客户端的情况下修改代码吗,接口不变就可以了。用
聚合的话不是也可以动态西欧改吗? 求大神举例子,看不明白哇。Java
组合带来了极大的灵活性。新类的成员对象通常都被声明为private,使得使用新类的客户端程序员不能访问它们。这也使得你可以在不干扰现有客户端代码的情况下,修改这些成员。也可以在运行时修改这些成员对象。以实现动态修改程序的行为。下面将要讨论的继承并不具备这样得灵活性,因为编译器必须对通过继承而创建的类施加编译时的限制。
红字部分不明白,用多态的话继承不是也可以在不干扰现有客户端的情况下修改代码吗,接口不变就可以了。用
聚合的话不是也可以动态西欧改吗? 求大神举例子,看不明白哇。Java
解决方案 »
- Hibernate在项目启动时自动建表
- 对于含有日期格式的list,如何利用json将其正确解析出来?
- 菜鸟提问:List类
- 才学JAVAEE没几天,想用severlet写个小程序写什么好呢
- 关于Struts2中的jsp前台有两个用户组的javascript实现问题
- hibernate 访问多数据库?
- javax.naming.NameNotFoundException的问题
- mysqldirver.jar和mysql-connector-java-3.10-stable.jar之间有什么关系?
- 毕业论文提交在即,老师又提新要求,急急急!
- ResultSet 的一个奇怪问题
- cxf异常,难以解决。求助!!!!!Marshalling Error: ELEMENT_NAME_MISMATCH
- 一点问题求教一下
class A{
private B b;
public void fun(){
//使用b完成某功能
}
}业务变更你就可以修改B和fun(),而不用修改别人调用你的那部分代码。
这是“这也使得你可以在不干扰现有客户端代码的情况下,修改这些成员”
例如:
private B b;func(){
case one:
b=BFactory.getInstance(One.class);
break;
case two:
b=BFactory.getInstance(Two.class);
break;}不知道这样理解对不对恩