文档章节

从头认识java-1.2 对象-服务提供者

raylee2015
 raylee2015
发布于 2015/10/21 08:10
字数 761
阅读 0
收藏 0

这一章节我们来讨论一下怎么理解对象?

1.服务提供者

对象:来源于“Object”,中文说的比较抽象,个人更倾向于台湾香港的译法“物件”,个人实实在在的感觉,不用那么虚,当然,如果叫实例也是比较好理解。

对象,我们可以想象成服务的提供者。它包含了一组数据以及一些可执行的方法。

例如:

package com.ray.ch01;

public class Bird {

	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	private void say() {
	}

	public static void main(String[] args) {
		Bird bird1 = new Bird();
		bird1.say();
		Bird bird2 = new Bird();
		bird2.say();
		System.out.println(bird1.equals(bird2));
	}
}

在上面的代码里面得出:

Bird,我们称为类,其实它就是我们自己定义的数据类型,映射实际世界里面的“鸟”。

在main方法里面的bird1和bird2,我们称之为对象,或者实例,或者物件等等,这两个实例属于了Bird这个数据类型,里面含有name这个属性,还有say这个方法。


这里,我们可以把bird1看作服务提供商,这个对象给我们提供say这个执行的方法。


2.分解对象

上面提到服务提供商,那么我们可以引入下面例子。

例如:黑白双方在设计五子棋时,可分为行为是相同的黑白双方,负责绘制画面的棋盘系统,负责判定犯规、输赢等的规则 系统。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种 变化,同时利用第三类对象(规则系统)来对棋局进行判定问题的步骤中的行为。

又例如:在分析学生管理系统,第一类对象是用户,负责输入数据,第二类对象是显示对象,赋值显示返回,第三类对象是逻辑处理对象,主要负责处理数据。


3.高内聚

既然上面提到了分解对象,那么必须提到高内聚。

高内聚:从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事

我们下面给出反面例子:

package com.ray.testobject;

public class Bird {
	private String name;
	
	private void sing() {		
	}
	
	private void fly() {		
	}
}


上面的例子很明显,sing这个方法应该属于歌唱家的,而fly是属于鸟的,因此这个类的内聚不高。由于内聚不高,因此当调用sing的方法的时候,就可能耦合bird这个类,造成以后维护的麻烦。

 

总结,这一章节介绍了对象作为服务提供者使用,并且延伸到分解对象和内聚。


这一章节就到这里,谢谢。

-----------------------------------

目录



版权声明:本文为博主原创文章,未经博主允许不得转载。

本文转载自:http://blog.csdn.net/raylee2007/article/details/49126729

共有 人打赏支持
raylee2015
粉丝 6
博文 265
码字总数 44224
作品 0
江门
私信 提问
Apache Commons Weaver 1.2 发布

Apache Commons Weaver 1.2 发布,该版本要求 Java 6 的支持,改进内容包括: 作为开发者,我们偶尔会碰到一些难以用 Java 语言表达的问题,而 Java 的注解处理工具可以起到很好的效果。当你...

oschina
2016/02/05
1K
0
使用 RMI + ZooKeeper 实现远程调用框架

在 Java 世界里,有一种技术可以实现“跨虚拟机”的调用,它就是 (Remote Method Invocation,远程方法调用)。例如,服务A 在 JVM1 中运行,服务B 在 JVM2 中运行,服务A 与 服务B 可相互进...

黄勇
2014/11/15
0
48
如何快速开发一个 Dubbo 应用

导读:在分布式系统中,远程调用是最基础也是最重要的基石。历史上,曾经先后出现过 CORBA、RMI、EJB、WebService 等技术和规范,在服务化以及微服务日趋流行的今天,更多的被广泛使用的是包...

Java填坑之路
2018/07/26
0
0
Scala学习笔记(1):Scala语言的来源

Scala是“scalable language”,也就是“可扩展”语言是意思。Scala是一种静态类型语言,它融合了函数式编程和面向对象编程和的思想,前者让它可以很方便快速地构建可用程序,后者则让其具有...

chengyao2
2013/04/28
0
0
用来理解 Java 编程语言的 8 个图表

很多时候,一张图比你说 1000 个字能更有效的说清楚一个问题。我们列举了 8 个关于 Java 语言的图表,或许可以让你对 Java 有着更深入的认识。 1. 字符串不变性(String Immutability) 下面的...

oschina
2013/09/23
7.8K
29

没有更多内容

加载失败,请刷新页面

加载更多

开始看《Java学习笔记》

虽然书买了很久,但一直没看。这其中也写过一些Java程序,但都是基于IDE的帮助和对C#的理解来写的,感觉不踏实。 林信良的书写得蛮好的,能够帮助打好基础,看得出作者是比较用心的。 第1章概...

max佩恩
昨天
11
0
Redux 三大原则

1.单一数据源 在传统的MVC架构中,我们可以根据需要创建无数个Model,而Model之间可以互相监听、触发事件甚至循环或嵌套触发事件,这些在Redux中都是不被允许的。 因为在Redux的思想里,一个...

wenxingjun
昨天
7
0
跟我学Spring Cloud(Finchley版)-12-微服务容错三板斧

至此,我们已实现服务发现、负载均衡,同时,使用Feign也实现了良好的远程调用——我们的代码是可读、可维护的。理论上,我们现在已经能构建一个不错的分布式应用了,但微服务之间是通过网络...

周立_ITMuch
昨天
4
0
XML

学习目标  能够说出XML的作用  能够编写XML文档声明  能够编写符合语法的XML  能够通过DTD约束编写XML文档  能够通过Schema约束编写XML文档  能够通过Dom4j解析XML文档 第1章 xm...

stars永恒
昨天
2
0
RabbitMQ学习(2)

1. 生产者客户端 void basicPublish(String exchange, String routingKey, boolean mandatory, boolean immediate, BasicProperties props, byte[] body) 1. 在生产者客户端发送消息时,首先......

江左煤郎
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部