对象导论系列---每个对象都提供服务

对象导论系列---每个对象都提供服务

将对象作为服务提供者来看待是一件伟大的简化工具,这不仅在设计过程中非常有用,而且当其他人试图理解你的代码或重用某个对象时,如果他们看出了这个对象所能提供的服务的价值,他会使调整对象以适应其设计过程变得简单得多。

当你正在试图开发或理解一个程序设计时,最好的方法之一就是将对象想像为“服务提供者”,程序本身将向用户提供服务,她将通过调用其它对象提供的服务来实现这一目的。你的目标就是去创建或者最好是在现有代码库中去寻找能够提供理想服务来解决问题的一系列对象。对象的“单一职责”是程序设计的基本要求之一,所以解决某个问题需要一系列对象。Java中非常重要的体系,如:IO系、容器系、多线程系、Socket系。。。她们都是有多个对象,并通过对象组合来解决复杂功能。体现了设计的核心:扩展性、灵活性、维护性。

将对象看作是服务提供者还有一个附带好处:她有助于提高对象的内聚性。高内聚是软件设计的基本要求之一:这意味着一个软件构件(例如一个对象,当然她也有可能是指一个方法或一个对象系)的各个方面“组合”的很好。初、中级设计人员在设计对象时所面临的一个问题是,将过多的功能都塞在一个对象中。在良好的面向对象设计中,每个对象都可以很好地完成一项任务,但是她并不试图做更多的事。

生产-消费模型:

生产-消费模型使用的场景非常多,直译场景就是:工厂-代理商,超市-顾客等,在Java大型异构系统(分布式)中,非常重要的消息中间件就是这种模型,其中有:生产消息服务提供者、消费消息服务提供者、存放消息服务提供者、维护消息服务提供者、消息实体服务提供者。

生产消息服务提供者:见名知意,职责就是生产消息;

消费消息服务提供者:见名知意,职责就是消费消息;

存放消息服务提供者:主要是负责存放生产出来的消息,类似于仓库。仓库是有容量的,所以还应该提供容量限制;

维护消息服务提供者:主要负责消息的维护,如:消费过的消息会有标签,这个服务会统一定时去清理;因为消息生产和消息是不对等,即不是生产出来必须立刻消费掉(M---N),

所以还应提供LRU规则,即生产出来很长时间没用,如果容量达到最大,这个服务要定时按照LRU规则进行清理,腾出空间供新生产出来的消息“入库”。

消息实体服务提供者:定义消息结构,并提供是否消费标签,以供消息维护服务来定时清理;

案例赏析:

(生产者:提供生产服务行为)

(消费者:提供消费服务行为)

(消息实体:提供定义消息实体、获取编号、主题、消息、设置是否消费等服务)

(消息仓库:提供消息入库、出库、是否超容量、当前容量等服务)

总结:所有的抽象都是用“每个对象都提供服务”的思想来设计生产-消费模式,虽然此模式还不完善,但是基本功能都有。并且每个对象都提供单一职责功能,符合面向对象设计的单一职责思想。

如果同学们有疑问或者想获取更多资源,可以加“张无忌”老师微信(17091005779),找老师获取。

原文地址:https://www.cnblogs.com/javajiuyangzhenjing/p/10189854.html

时间: 2024-11-12 14:27:39

对象导论系列---每个对象都提供服务的相关文章

对象导论系列---每个对象都至少有一个接口

对象导论系列---每个对象都至少有一个接口 面向对象程序设计主要是用来解决人们实际生产.生活中遇到的问题.通过将现实生活中的问题和解空间中的对象进行映射,并对对象进行抽象.关联.组合.发送消息来具体解决实际问题.现实生活中的实体也都是有自己的特性和行为的,并且每个实体都会与其范围内的其它实体有关系,有的是强关系,有的是弱关系. 下面看下本节的关键性概念(思想) 类:将具有相同特性和行为的一类实体定义为类.当看到类型一词时,可以将其作为类来考虑.因为类描述了具有相同特性(数据元素)和行为(功能)的

【Thinking in Java-CHAPTER 1&&2】对象导论&&一切都是对象

JAVA起源 从JDK诞生到现在已经有11年的时间了.沧海桑田一瞬间.转眼11年过去了,JDK已经发布了6个版本.在这11年里诞生了无数和Java相关的技术和标准.现在让我们进入时间隧道,重新回到1995年,再来回顾一下Java的发展轨迹和历史变迁. 一. JDK前传 在这个世界上,熟悉Java历史的人非常多,如果要问一个人Java是从哪年诞生的,也许大多数人都会回答是1995年(这个非常好记,因为微软的Windows95也是在这一年发布的).但事实上Java早在上个世纪90年代初就开始酝酿了.

thinking in java (对象导论、一切都是对象)

1.public,对任何元素可用:protected,相当于private,差别在于继承的类可以访问protected,不能访问private:private,只有类型创建者和类型的内部方法可以访问. 2.使用新类声明一般用private,修改不影响客户端的使用. 3.覆盖overriding,就是重写,继承extends.也可以添加新方法. 4.客户端编程,插件(plug-in),脚本语言,java,备选方案,internet和intranet,服务器端编程.(提到python) 5.特例:n

【java编程思想--学习笔记(四)】对象导论

写这篇博客的前言: 长话短说,我希望通过阅读<java编程思想>来使我的代码 简洁可用 . 目的的层次不同,首先具体的目标是,了解Java的特性和巩固Java的基础. 更抽象的目的如下: 1.期待以巩固基础的方式,使代码优美,简洁,高效. 2.使自己写的模块能够开放适度,好用. 3.形成一种对代码是否优美的审美观. 于是<Java编程思想>第一章 对象导论 由此开始. 1.1 抽象过程 java 相对于命令式语言的优势在于只针对于待解问题建模.后者所做的主要抽象要求所做问题基于计算

Java编程思想 第一章、对象导论

对象导论阅读理解: 1.解决问题的复杂性直接取决于抽象的类型和质量(抽象类型及抽象的是什么?). 汇编语言是对底层机器的轻微抽象,而C.Basic等指令式语言都是对汇编语言的抽象,它们所做的主要抽象仍要求在解决问题时 要基于计算机的结构,而不是基于要解决的问题的结构来考虑,Java语言与C.Basic等相反,其面向问题空间的抽象而非计算 机底层实现来考虑问题结构. 2.解空间及问题空间 解空间:对应于机器模型,问题建模的地方: 问题空间:实际解决问题的模型,问题存在的地方,如一项业务: 3.对象

【Java编程思想】一、对象导论

作为一个电子专业的人,在学习了将近3年的嵌入式技术后,决定投奔移动互联网,在互联网大潮中急流勇进! 为了学习OOP(Object-oriented Programming),为了转向移动互联网,我决定开始学习android开发,那么就从Java开始吧! Java的学习资料很多,在研究几天之后,决定从<Java编程思想>这本书开始. 而在这本书之前,我已经看完了一个培训导师的Java4Android的Java教学视频,看的很快,因为我学过C和C++. 但我的Java水平依旧很差,主要在于面向对象

Java 基础之一对象导论

对象导论 1.1 抽象过程 所有编程语言都提供抽象机制.人们所能解决的问题的复杂性直接取决于抽象的类型和质量. 汇编语言是对底层机器的轻微抽象. 我们将问题空间中的元素及其再解空间中的表示称为对象.这种思想实质是:程序可以通过添加新类型的对象使自身适用于某个特定的问题. 万物皆为对象 可以抽取待求解问题的任何概念化构建表示程序中的对象. 程序是对象的集合 他们通过发送消息来告知彼此所要做的. 每个对象都有自己的由其他对象所构成的存储 每个对象都拥有其类型 某一特定类型的所有对象都可以接收同样的消

一 对象导论

java学习   对象导论 1.对象的抽象过程 所有的编程语言都提供抽象机制.可以认为,解决问题的复杂性直接取决于抽象的类型和质量. ▲面向对象程序设计方式的特性: 1)万物皆对象.你可以抽象待解决问题的任何概念化构件. 2)程序是对象的集合,它们可以通过发送消息来告知彼此所要做的. 3)每个对象都有自己的由其他对象所构成的存储. 4)每个对象都拥有其类型 5)某一特定类型的所有对象都可以接受同样的信息 2.每个对象都有一个接口 接口确定了对某一特定对象所能发出的请求. 3.每个对象都提供服务

Java编程思想总结(一)对象导论

Java编程思想总结(一)对象导论 1.1 抽象过程 万物皆对象. 程序是对象的集合(即:类),他们通过发送消息(调用方法)来告知彼此要做的. 每个对象都有自己的由其他对象所构成的存储(引用其他对象或基本类型,即组合). 每个对象都拥有其类型.每个类最重要的区别于其他类的特征就是“可以发送什么样的消息给它”(即调用方法). 某一特定类型的所有对象都可以接受同样的消息. 对象具有状态(成员属性).行为(成员方法)和标识(引用的名称).每个对象在内存中都有唯一的一个地址. 1.2 每个对象都有一个接