我们重新审视的以下
JAVA
的
Object
的对象
,
其中包含了两个特殊的方法,
equals
和
clone
,从这两个方法我们可以看出,在面向对象的程序设计中,对象的设计不能紧紧参考其所描述的对象,而不是不可添加其他便于对象活动的行为的。为什么会有这样的结论,
equals
的判断两个对象是否相同,这种对象与对象之间相同与否的问题,是只有具备智能的动物或者智能机器人才有的能力做这样的结论,大多数的对象是没有此能力的,
clone
就不必说了。故做对象设计不必严格遵守现实,现在大家在写程序的时候经常创建的
javabean
,只有
setter
和
getter
,也是一种无活力对象,只具备传递数据的能力,而且要配合对应的
service
方法才完成工作,
service
类就是一个方法集,严格来讲不是面向对象编程。
我们不必在意是否遵守了面向对象的设计方法,能提高生产力的方法,就是好方法。我尝试了一种新的设计方法,看是否可以提高生产力,大家不妨看看。
第一,
Object
对象已经具备
equals
和
clone
了这样的智能方法了,我们不妨再让这个
object
聪明点,给他提供记忆联想功能。接下来的两点详细说明。
第二,很多对象是需要存储的,对象储取能力不需要外部提供,而是继承提供存取能力的对象,这就好像说,你家养的狗狗可以自己到宠物管理机构登记和变更它自己的信息了(听着都轻松),不用那么现实。
第三,世界上任何对象都不是孤立存在,而是相互影响的,存在因果关系的,一种原因能产生什么样的结果,有些是一定的,有的却不一定,对象之间的关联,有些情况是联系紧密的、有些是疏散的,对象具备自己的关系网络。如你目睹一起三车相撞的事故,其中一人的腿的伤势给你印象深刻,以后任何人提起腿受伤,你都会想起那个人,接着想起亲眼目睹那次事故,你还可以想到这起事故具体是如何发生的,即有点到面,有面到体,逐步深入。下面是我的一个对象设计(源代码
https://sourceforge.net/projects/thinery/files/try.zip/download
):
public abstract class IObject extends Observable {
protected static boolean inited = false;
public IObject() {
.......
}
/**
* 对象第一此加载的时候初始化所有的监听器,该类的活动如果影响的其他对象
* 都可以在监听器完成因果传递,监听器统一配置在一个叫:[子类名称]_lstnr.properties
* 的配置文件中,如果对象找不到该文件,会认为没有监听器
*/
static Map<String, Observer> observers = new HashMap();
/**
* 把对象自身持久的数据库的方法。子类可以根据类的情况,重写该方法。 如该类是一对一,一对多的,想把关联对象一起存储,就需要重写该方法
*
* @throws RuntimeException
*/
public abstract void remember();
/**
* 删除此对象对应的数据库记录。 恰如我们忘记一件事物
*/
public abstract void forget();
/**
* 用于更新数据库记录,需要更新对象的某一个属性时,用到此方法。 恰如我们需要更新对一件事物的记忆。
* 我们每隔三天去看一个正在建设的高楼,那么大脑每次都要更新高楼的高度。
*
* @param updateFields
* 属性的名称,如果你更改username的值,那么这个参数就应该是username, 注意不是username的值
*/
public abstract void updateMemory(String... updateFields);
/**
* 这是一个最自由的方法,该类方法名称意为”联想“,最好的默认实现是查询相关对象。 如:我们通过宝马,联想到奔驰和奥迪。
* 如果这是一个事件对象,那么你可以让他想到与这个事件相关的任何东西。
*
* @param params
* 任何对象
* @return
*/
public abstract List associate(Object... params);
/**
* 根据主键数据库中获取全部信息
*
* @param id
* @return
*/
public abstract void obtainMe();
protected String getThisName() {
String name = this.getClass().getName();
int b = name.lastIndexOf(".");
String shortName = name.substring(b + 1);
return shortName;
}
private void initOberserver() throws IOException, InstantiationException,
IllegalAccessException, ClassNotFoundException {
InputStream inStream = this.getClass().getClassLoader()
.getResourceAsStream(this.getThisName() + "_lstnr.properties");
if (inStream != null) {
Properties temp = new Properties();
temp.load(inStream);
Iterator<Entry<Object, Object>> iter = temp.entrySet().iterator();
while (iter.hasNext()) {
Entry e = iter.next();
String key = (String) e.getKey();
String value = (String) e.getValue();
Observer obsr = (Observer) Class.forName(value).newInstance();
observers.put(key, obsr);
}
}
}
}
分享到:
相关推荐
- 第一天主要介绍DDD设计篇,通过事件风暴法进行业务领域建模,建立统一语言建模,理解成为顶级业务架构师的本质。 - 第二天关注DDD实践篇,讲解如何基于领域模型进行数据库和程序设计,以及如何设计聚合、工厂和...
以上12种设计模式构成了C#面向对象设计的基础框架,理解和熟练运用这些模式可以极大地提升代码的可读性、可维护性和复用性,帮助开发者编写出更加优雅的软件系统。通过阅读《C#面向对象设计模式纵横谈》一书,你将...
本篇论文主要探讨了基于云服务的智能控制器设计,特别以泡茶机为研究对象,介绍了智能化控制技术在家居领域中的应用。以下是对该文献的详细知识点介绍。 知识点一:智能家居技术的发展与趋势 智能家居的概念自上...
《人工智能五子棋设计》这篇论文探讨了人工智能在机器博弈领域的应用,特别是在五子棋游戏中的实现。五子棋作为一种简单但策略丰富的游戏,对于测试和优化博弈算法具有理想的效果。本文将深入解析人工智能在五子棋...
1. **面向对象编程(OOP)**:面向对象编程是一种程序设计方法,它将问题领域中的实体抽象为对象,并利用封装、继承和多态等机制来组织代码。Java是一种面向对象的编程语言,它自然支持OOP的基本概念。在五子棋的...
最后,doi编号“10.3969/j.issn.1673-629X.2017.01.027”是该篇文献的数字化对象唯一标识,便于电子文档的引用和检索。 通过对《智能家居控制APP系统的设计与实现》一文的阅读和分析,我们可以对智能家居系统的相关...
智能车软件系统的设计与仿真是一项涉及多个领域知识的高科技项目,其中包括图像处理、控制系统设计、传感器技术、电子通信以及计算软件的应用等。本篇文献主要介绍了基于Matlab软件和32位单片机MK60X256VLQ100的智能...
Python 是一种非常流行的编程语言,广泛应用于数据科学、人工智能、Web 开发等领域。 在软件开发中,设计模式是一种非常重要的思想和方法论,它可以帮助开发者更好地设计和实现软件系统。设计模式可以分为三大类:...
本篇文档描述了一个基于单片机的智能鱼缸温度控制系统的设计方案,强调了设计过程中的关键技术和实施步骤,下面将对其中的知识点进行详细解读。 首先,单片机(Microcontroller Unit, MCU)作为智能鱼缸温度控制...
1. **软件设计背景**:阐述为什么选择西洋跳棋作为项目,以及该项目在计算机科学与技术、人工智能领域的重要性。 2. **需求分析**:明确游戏的基本功能,如用户界面、棋盘操作、规则判断等,以及对于人机对弈的智力...
本篇文章将围绕“UML智能停车场设计图”这一主题,深入探讨如何运用统一建模语言(UML)来构建智能停车场的系统模型。 首先,UML是一种通用的、可视化建模语言,广泛应用于软件工程领域,用于描述、构建和文档化...
综上所述,文档提供的知识点涵盖了智能系统设计、人工智能、虚拟现实技术、VRML编程以及实验室建模等多个领域。这些知识不仅对于设计和开发煤气泄漏报警及智能排险系统有指导意义,还可以广泛应用于其他需要虚拟环境...
通过上述内容的阐述,我们可以看出,这篇文章介绍了基于人工智能的视觉目标定位系统的设计原理、技术基础、应用实例以及未来发展方向,重点突出了在复杂工业环境下的机器人视觉系统的重要性和实施方法。
本篇文档主要探讨了如何利用Android平台设计并实现一个智能导航系统,涉及的技术包括Android开发、Java编程以及Apache开源库的运用。 一、Android开发基础 Android系统是基于Linux内核的开源移动平台,它为开发者...
根据提供的文件内容,这篇论文的研究主题是关于Al-Si合金活塞金属型铸造工艺和模具设计的智能化。文中详细介绍了相关领域专家系统的设计和实现,包括系统功能、构成以及知识表达与知识库的建立等方面。 知识点一:...
根据给定的文件信息,下面将介绍关于“基于物联网技术的智能手环防盗门设计与制作”的知识点。...通过这篇文章,我们可以了解到物联网技术在智能家居领域的一个具体应用实例,以及其背后的技术支持。
《基于超市商务智能的数据挖掘应用模型设计》这篇文章深入探讨了如何在超市的商务智能系统中有效运用数据挖掘技术,以实现更精准的营销策略和决策分析。以下是对该文核心知识点的详细阐述: ### 一、数据挖掘在商务...
J2ME是Java平台的一个子集,特别为移动设备和嵌入式系统设计,广泛应用于早期的智能手机游戏开发。在这个领域,你将学习到如何创建引人入胜、互动性强的游戏体验,尽管现在有许多高级的游戏引擎和平台,但理解J2ME的...
本篇文章主要介绍了基于PLC控制的智能抢答器设计。PLC(Programmable Logical Controller)是一种新型的通用自动控制装置,具有功能强、编程简单、使用方便、体积小、重量轻、功耗低等一系列优点。随着科技的飞速...