本人在一家外企工作,由于平时在项目开发中十分重视设计模式的运用,所以很快就参与到公司的跨国项目中,有机会了解了国外CTO的一些设计思想,并且个人也参与了部分组件的设计工作。<o:p> </o:p>
从接手的项目可以看出那些国外的CTO在设计大型项目时的基本设计思想是按照组件的开发模型。因为我到手的项目均为一个个Component。 同时他们非常注重Interface design。因为每个Component项目开始前都会要求我给出详细的API 和Javadoc。对他们而言只要Interface确定下来的话Implementation是很容易实现的。而且他们也非常强调基于Interface的façade 结构模式的运用,每个API 都会要求多个实现方式。<o:p></o:p>
我参与这样的设计时间并不长,所以有可能理解上会有些偏差,以下为我个人对于Interface design的理解:<o:p></o:p>
- 在面向对象的设计中我们希望做到的是让结构与策略实现完全分离。Interface design就可以很好的实现这一目的。<o:p></o:p>
- Interface 构建了软件的基本框架。<o:p></o:p>
- Interface限定了implementation的方法结构,并且实现了implementation的可扩展性。<o:p></o:p>
- 对于熟悉GOF设计模式的朋友都会总结出这样一个编程的思维方式:Interface Driven Design (接口驱动) 。几乎所有的GOF设计模式都由接口 (Interface) 驱动的。合理的Interface design为各种Gof设计模式的实现提供了可能性。<o:p></o:p>
- Interface design 可以明确软件逻辑工作流,如果使用Easymock等模拟框架的话,可以直接写出清晰的,可运行的Use Case. 从而实现 TDD的开发思想。<o:p></o:p>
分享到:
相关推荐
### 软件设计师培训知识点概述 #### 一、软件设计师考试要求 1. **数据表示与运算**:掌握各种数据表示方式(如二进制、十六进制等)及算术逻辑运算规则。 2. **数学基础**:掌握线性代数、概率论与数理统计等应用...
### 软件行业CTO的角色与价值:开源节流的艺术 在当今的软件行业中,首席技术官(CTO)的角色日益凸显,他们不仅是技术的领导者,更是企业战略的重要参与者。CTO在软件公司中扮演着多面手的角色,不仅需要关注技术...
在软件设计和架构方面,你需要掌握设计模式,如工厂模式、单例模式、观察者模式等,以及SOA(面向服务架构)和微服务架构。学习如何进行性能调优,包括代码优化、JVM内存管理、监控工具的使用等。 进入管理层后,你...
51CTO下载-JAVA编程计算器代码
包含--(1)Java编程基础、(2)Java.Web高级开发技术(3)Java网络开发(4)Java.Web核心框架(5)Java.Web系统设计与架构 五部分的书籍一脉相承的讲解Java,让你赢在起跑线上的推荐,你值得拥有。
Java是一种广泛使用的面向对象的编程语言,其设计目标是具有高可靠性、安全性、跨平台兼容性。Java的基础包括语法、类、对象、接口、包、异常处理、多线程、输入输出流等核心概念。学习Java基础时,需要掌握变量、...
从程序员到CTO跃迁的Java技术路线图,一图胜千言,一图胜万字,结构清晰明了,内容丰富多彩,条理简明扼要,所见即所得,简约而不简单。
根据提供的信息,我们可以详细分析并解释每一个题目中的知识点: ...- **解析**:在没有明确合同约定的情况下,根据中国相关法律规定,受委托开发的软件著作权归受托方所有。因此,正确答案是 **A. 甲**。
Java是一种面向对象的语言,其核心在于类和对象的概念。这部分内容会讲解封装、继承、多态这三大面向对象特性,以及类的构造器、访问修饰符、抽象类、接口等关键概念。学习者需要理解如何设计和实现具有复用性和...
首先,Java源代码是程序员用Java语言编写的程序文本,它是程序设计的基础。学习源代码可以让你了解游戏背后的逻辑和实现机制,从而提升编程技能。在这个压缩包中,你可能会发现如游戏循环、对象创建、碰撞检测、动画...
这包括但不限于编程语言(如Java、Python、C++等)、操作系统原理、数据结构与算法、数据库设计、网络协议等基础知识。随着技术的不断发展,云计算、大数据、人工智能、区块链等新兴技术也成为了CTO必须关注和掌握的...
3. **编程语言与技术栈**:软件设计师应熟练掌握至少一种或多种编程语言,如Java、Python、C++等,并熟悉相关开发工具。同时,了解前端技术(HTML、CSS、JavaScript)、数据库管理、后端框架等也是必要的。 4. **...
### Java网络编程讲义知识点详解 #### 一、Java数据流输入/输出概览 **1.1 输入/输出的概念** 在程序设计中,“输入/输出”(简称I/O)通常指的是程序与外部世界(例如硬盘、网络或其他设备)之间的数据交换过程...
《2020年软考软件设计师历年真题》是一个重要的资源,对于准备参加软件设计师考试的考生来说,具有极高的参考价值。这份资料包含了历年来的考试真题,且附带了答案讲解,有助于考生全面了解考试的题型、难度以及考察...
"51CTO下载-ACCP6.0_Y2-JAVA-毕业项目.zip" 是一个专门针对ACCP(北大青鸟职业教育课程体系)6.0第二年Java编程阶段的毕业设计项目的压缩包。这个项目旨在帮助学习者巩固和提升Java编程技能,同时理解和实践软件开发...
51CTO下载-系统架构设计师教程.part1 共两部分。
Java是一种面向对象的编程语言,它的语法中包含了50个关键字,这些关键字有着特定的含义和用途,对于理解和编写Java代码至关重要。以下是一些主要的关键字及其解释: 1. `abstract` - 表示抽象的,用于声明抽象类或...
软件设计师考试是计算机技术与软件专业技术资格(水平)考试的重要组成部分,旨在检验应试者的软件设计能力和理论知识。希赛作为一家提供专业IT培训的机构,其提供的软件设计师考试笔记对于准备该考试的考生来说是一...
不错的JAVA学习参考资料!《Java 2实用教程(3版)实验代码及答案.pdf》《java(第3版例子代码).pdf》