#设计名片的软件

《设计模式之禅》之工厂方法模式

定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。1.工厂方法模式的优点首先,良好的封装性,代码结构清晰。一个对象创建是有条件约束的,如一个调用者需要一个具体的产品对象,只要知道这个产品的类名(或约束字符串)就可以了,不用知道创建对象的艰辛过程,降低模块间的耦合;其次,工厂方法...

《设计模式之禅》之单例模式

确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。1.单例模式的优点由于单例模式再内存中只有一个实例,减少了内存开支,特别是一个对象需要频繁地创建、销毁时,而且创建或销毁时性能又无法优化,单例模式的优势就非常明显;由于单例模式只生成一个实例,所以减少了系统的性能开销,当一个对象的产生需要比较多的资源时,...

《设计模式之禅》之六大设计原则下篇

本文主要讲迪米特法则和开闭原则。1.定义迪米特法则也称最少知道原则,虽然名字不同,但描述的是同一个规则:一个对象应该对其他对象有最少的了解。通俗地讲,一个类应该对自己需要耦合或调用的类知道得最少,你(被耦合或调用的类)的内部是如何复杂都和我没关系,那是你的事情,我就知道你提供的这么多public方法,我就调用这么多,其...

《设计模式之禅》之六大设计原则中篇

本文主要讲依赖倒置原则和接口隔离原则。1.定义高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖于抽象;高层模块和低层模块容易理解,每一个逻辑的实现都是由原子逻辑组成的,不可分割的原子逻辑就是低层模块,原子逻辑的再组装就是高层模块。那什么是抽象?什么又是细节呢?在Java语言中,抽象就是...

《设计模式之禅》之六大设计原则上篇

本文主要讲单一职责原则和里氏替换原则。1.定义应该有且有一个原因引起类的变更。2.单一职责原则的好处好处如下:类的复杂性降低,实现什么职责都有明确清晰的定义;可读性提高,复杂性降低,那当然可读性提高;可维护性提高,可读性提高,那当然更容易维护了;变更引起的风险降低,变更是不必可少的,如果接口的单一职责做得好,一个接口修...

架构设计流程

今天我主要说说架构设计流程,围绕着这么几个方面来讲?(1)识别复杂度;(2)设计备选方案;(3)评估和选择备选方案;(4)详细方案设计;一、识别复杂度在如下两篇文章中,我阐述了六个复杂度来源。文章分别为:架构设计之六个复杂度来源       &nbs...
代码星球 ·2020-07-24

架构设计之六个复杂度来源(续)

这篇继上篇架构设计之六个复杂度来源没有讲完的剩下的三个内容低成本、安全、规模等。 一、低成本当我们的架构方案只涉及几台或者十几台服务器时,一般情况下成本并不是我们重点关注的目标,但如果架构方案设计几百甚至上千上万台服务器,成本就会变成一个非常重要的架构设计考虑点。例如,A方案需要10000台机器,B方案只需要...

架构设计之六个复杂度来源

之前在谈谈架构设计的目的这篇文章中说过,架构设计的目的就是为了解决软件系统复杂度带来的问题。但是究竟复杂度有哪些呢?所以今天借此说说软件复杂度的六个来源:1.高性能;2.高可用;3.可扩展性;4.低成本;5.安全;6.规模; 一、高性能对性能孜孜不倦的追求是整个人类技术不断发展的根本驱动力。例如计算机,从电子...

架构设计三原则

成为架构师,可以说是绝大多数开发者的梦想。但是这个过程并不是一件简单的事情,如果简单的话,意味着供过于求,就代表着不值钱了。在目前国内,架构师也算是一个比较吃香的职业。对于年龄较大的小伙伴们,他们的选择通常有这么几个?第一、继续开发者之路,毕竟现在30多岁的资深工程师也不少(通常这些人,对于公司来说,业务非常熟练(某工...
代码星球 ·2020-07-24

谈谈架构设计的目的

今天主要谈谈这么几个问题?第一、架构设计的目的是什么?第二、架构设计的常见误区?1.不做架构设计的系统难道就跑不起来吗?2.设计良好的架构能促进业务发展吗?第三、不是每个系统都需要做架构设计?第四、为了高性能、高可用、可扩展,所以要做架构设计?这四个问题摘自李运华先生在极客时间中的《从0开始学架构》专栏。针对这四个问题...
代码星球 ·2020-07-24

为什么结构化编程、面向对象编程、软件工程、架构设计最后没有成为软件领域的银弹

为什么结构化编程、面向对象编程、软件工程、架构设计最后没有成为软件领域的银弹?从计算机语言开始讲,一步一步的概述和讲解,最终会有一个结论,大家往后看,即可明白。1.机器语言(1940年之前)机器语言,直接使用二进制码0和1来表示机器可以识别的指令和数据。比如0100011111000010101,请问你知道是什么意思吗...

系统设计和系统划分有定律可循

今天要说说这两个定律,一个是墨菲定律,另外一个是康威定律。有人说:在系统设计时,可以以“墨菲定律”作为警醒。墨菲定律:任何事物都没有表面看起来那么简单。所有的事都会比你预计的时间长。可能出错的事总会出错。如果你担心某种情况发生,那么他就更有可能发生。 "任何事物都没有表明看起来那么简单...

手绘web原型设计的感受

当下有许多流行的Web原型设计工具,比如mockplus等,mockplus在我们团队初次开发rms系统用到过,确实还不错,但是,原型工具有其优势也有其劣势。礼拜一开会时,经理跟我说,觉得现在的LMS还不太完善,比如如果我们要更换某个功能时,或者是换掉这个第三方提供者接口功能,使用另外的第三方提供者的接口功能,还需要改...

软件工程之软件概要设计

在完成对软件系统的需求分析之后,接下来需要进行的是软件系统的概要设计。一般说来,对于较大规模的软件项目,软件设计往往被分成两个阶段进行。首先是前期概要设计,用于确定软件系统的基本框架;然后是在概要设计基础上的后期详细设计,用于确定软件系统的内部实现细节。概要设计也称总体设计,其基本目标是能够针对软件需求分析中提出的一系...

软件工程之项目分析与规划

在软件项目早期,需要对软件问题进行高层构架分析,以确定项目的可行性。还需要根据可行性分析的结果制定出有效的项目实施计划,以指导软件项目的顺利开展。一、计算机系统分析当某个软件问题被作为项目提出时,即意味着,这个软件问题将成为一项工程任务,需要按照工程化作业流程来分阶段解决。其中,计算机系统分析是软件项目工程化作业流程中...
首页上一页...7374757677...下一页尾页