什么是系统设计的核心?
当然我现在所说的内容都是建立在面向对象基础之上的,也就是用面向对象的语言java或C#设计出来的的软件系统。那么软件系统设计的核心问题是什么呢?那就是如何让系统易于维护并且复用性较好,让软件系统具有可维护性和可复用性,是我们的系统要达到的目标。
要完成上述的目标,并不是一件特别容易的事情。一个完成了上述目标的软件系统必然具备可扩展性、灵活性、可插入性这三个特质。如何才能具备这三个特质呢?当然是提高软件的可维护性和复用性了,哈哈,又绕回来了。那么如何完成软件系统的设计目标呢?那就是以设计原则和设计模式为基础来设计我们的系统。
在《Java与模式》这本书中提出了一个“支持可维护性的复用”的概念,他的定义是:“在保持甚至提高系统的可维护性的同时,实现系统的复用”。(好像是废话啊!)“支持可维护性的复用”的基础就是我们上面提到的设计原则和设计模式。
设计原则有哪些?设计原则与设计模式有什么关系?
在面向对象的设计中,有六个设计原则(这些原则也都是复用原则,当然也并非全部的设计原则。):
设计原则是系统设计的核心。
设计原则表述的是架构师对整个系统的核心设计思想,并且要求把这个设计思想贯穿到所有子系统的概要/详细设计中,所以在这些子系统的概要/详细设计中要充分体现出对设计原则的考虑。
对于系统而言,什么才是设计思想呢,每个架构师在做系统的设计之前一般是会有思考的,思考的内容基本就会是要实现需求核心的几个点是什么,这些核心的点就是设计思想。
如何理解j***a语言?
J***a 本身是一种面向对象的语言,最显著的特性有两个方面,一是所谓的“书写一次,到处运行”(Write once, run anywhere),能够非常容易地获得跨平台能力;另外就是垃圾收集(GC, Garbage Collection),J***a 通过垃圾收集器(Garbage Collector)回收分配内存,大部分情况下,程序员不需要自己操心内存的分配和回收。
JRE,也就是 J***a 运行环境,包含了 JVM 和 J***a 类库,以及一些模块等。而 JDK 可以看作是JRE 的一个超集,提供了更多工具,比如编译器、各种诊断工具等。
j***a语言就是一门编程语言,用来解决现实当中各种复杂的业务逻辑问题。
J***a 在特定情况下解决了特定平台间的跨平台问题,解决方法是把 J***a 本身做成一个平台。然后,只要把 J***a 平台本身部署到目标机器,那么应用理论上就可以用了,这个方法对不同 fl***or 的 Unix 系统之间的程序移植带来了很多好处。——这所有的好处都来自服务器领域。——J***a 虚拟机把这些「型号不同但实质上等价」的服务器虚拟成一致的。但 J***a 无法解决那些「实质上就不一样的设备」之间的兼容性。
J***a 最初的目标,甚至都不是为了把 Windows 移植到 Linux,而是为了让不同 fl***or 的 Unix 之间能够做到二进制兼容。但无论如何,不同的 Unix 本质上都是 Unix,他们之间实现二进制兼容相对比较现实。但诸如 Linux/Windows/OSX 这样本质区别很大的平台,二进制兼容很大程度上只是过于美好的幻想。他们在一些系统核心调用方面可能存在完全不同的机制,以至于你为了选择一个所有系统可用的方式必须牺牲最优效率。