智慧·快乐·成长——科技造福于人。

智乐兔

架构设计

  • 几种常见的UML图标及解释

    几种常见的UML图标及解释

    1.对象(Object) 格式:|对象名:类名|,图标是一个一列两行表格,第一行按格式对象名:类名列出,第二行是对象成员区,包含域、属性、构造函数、方法和内部类等。 2.类(Class) 程序世界里,先有类的定义,后有对象的创建,刚好与现实相反,图标如下: 3.接口(Interface) 接口与类的区别是有关键字<>,用法如下: 4.库(package) 又叫包,图标是一个文件夹的样式: 5.依赖关系(Dependency) 图标是个虚线箭头,箭头指向被依赖的目标: ———————— ...

    查看全文

  • 互联网运营驱动模式

    互联网运营驱动模式

      注:这里所说的运营,是指互联网运营,与传统市场活动不同。   市场化需要的是运营,运营的是服务集成能力和服务输出能力。运营的业务是能给组织创造价值的商业活动。为了创造更多的收益,必须提高业务运营的核心竞争力和效率,必须针对核心业务做顶层规划、布局,必须针对规划和布局拟定详细的、切实可行的执行方略。市场化运营方案的1.0应该是具体的、可见的、可执行的业务场景、业务逻辑和业务规则体系。 我们需要的市场化运营是基于业务系统的数字化运营,数字化运营需要的是实现了运营功能的IT平台。在IT平台上实现运营,背后的逻辑是完备的市场化运营方案,在市场化运营方案的指导下才足以实现信息化平 ...

    查看全文

  • 系统架构师知识结构

    系统架构师知识结构

    软件系统架构师综合的知识能力结构包括9个方面,即: 战略规划能力。 业务流程建模能力。 信息数据架构能力。 技术架构选择和实现能力。 应用系统架构的解决和实现能力。 基础IT知识及基础设施、资源调配的能力。 信息安全技术支持与管理保障能力。 IT审计、治理与基本需求分析、获取能力。 面向软件系统可靠性与系统生命周期的质量保障服务能力。 作为软件架构师,必须为所在的开发团队的技术路线引导者;具有很强的系统思维能力;需要从大量的互相冲突的系统方法和工具中区分出哪些是最有效的,哪些是无效的。架构师应当是一个成熟的、丰富的、有经验的、有良好教育的、学习快捷、善沟通和决策能力强的人。丰富是指他必须具有业 ...

    查看全文

  • 从开发人员到架构师

    从开发人员到架构师

    软件架构师一般都具备计算机科学或软件工程的知识,由程序员做起,然后再慢慢成长为架构师。国内教育体系还没有设立软件架构的学位课程,学校课程中增加的相关内容已不能满足产业发展的需要。软件架构师的成长还需要一个实践的过程,并不是简单地通过学校的理论学习或者通过某软件公式的认证就能成为合格的软件架构师。一名合格的软件架构师的成长应该经历8年以上的实际软件项目开发工作。一般需要经历程序员、软件设计师等阶段,然后再逐步成长为软件架构师。 并不是每一位程序员经过8年后都可以成长为软件架构师。一个软件架构师在充分掌握了软件架构师工作所必须的基本理论和技能后,如何得到和利用机会、如何利用所掌握的技能进行系统的合 ...

    查看全文

  • 接口隔离原则(ISP)

    接口隔离原则(ISP)

    接口隔离原则(Interface Segregation Principle,常常略写做ISP)讲的是:使用多个专门的接口比使用单一的总接口要好。 换言之,从一个客户类的角度来讲,一个类对另外一个类的依赖性应当使建立在最小的接口上的。 什么是接口隔离原则 角色的合理划分 将“接口”理解为一个类所提供的所有方法的特征集合,也就是一种在逻辑上存在的概念。接口的划分直接带来类型的划分。 角色划分的原则叫做角色隔离原则。 定制服务 将接口理解成为狭义的Java接口,接口隔离原则讲的就是为同一个角色提供宽、窄不同的接口,以对付不同的客户端,如右图所示。这种方法在服务行业叫做定制服务(Customized ...

    查看全文

  • 依赖倒转原则(DIP)

    依赖倒转原则(DIP)

    实现“开-闭”原则的关键是抽象化,并且从抽象化导出具体化实现。如果说“开-闭”原则是面向对象设计的目标的话,依赖倒转原则就是这个面向对象设计的主要机制。 要依赖于抽象,不依赖于具体。 为什么要使用“倒转(Inversion)”一词,依赖倒转(Dependence Inversion)的意义是什么? 传统的过程性系统的设计方法倾向于使高层次的模块依赖于低层次的模块;抽象层次依赖于具体层次。倒转原则是要把这个错误的依赖关系倒转过来,这就是“依赖倒转原则”的来由。 抽象层依赖于具体层次的含义是什么呢?抽象层次包含的是应用系统的商务逻辑和宏观的,对整个系统来说重要的战略性决定,是必然性的体现;而具体层 ...

    查看全文

  • 里氏代换原则(LSP)

    里氏代换原则(LSP)

    从“开-闭”原则中可看出面向对象设计的重要原则是创建抽象化,并且从抽象化导出具体化。具体化可以给出不同的版本,每一个版本都给出不同的实现。 从抽象化到具体化的导出要使用继承关系和里氏代换原则(Liskove Substitution Principle,常缩写为LSP)。 里氏代换原则的定义:如果对每个类型为t1的对象o1,都有类型为t2的对象o2,使得以t1定义的所有程序p在所有的对象o1都代换成o2时,程序p的行为没有变化,那么类型t2是类型t1的子类型。 一个软件实体可以使用基类的时候,也可以使用其子类。 里氏代换原则是继承复用的基石。只有当衍生类可以替换掉基类,软件单位的功能不会受到影 ...

    查看全文

  • Java抽象类解析

    Java抽象类解析

    Java语言里类分两种:具体类,抽象类。具体类可以实例化,抽象类不可以。 抽象类仅能提供一个类型的部分实现。可以有实例变量,以及一个或以上的构造方法。 可以同时拥有抽象方法和具体方法。 构造方法不能被客户端调用来创建实例,可以被子类调用,共享抽象类的实现并且子类可以在此基础上追加自己的实现。 抽象类、子类的关系时模板方法模式的应用。 抽象类代表抽象概念,提供继承的出发点。 具体类不是用来继承的,原则上,只要有可能,不要从具体类继承。 在一个继承关系形成的等级结构里面,树叶节点均应当使具体类,而树枝节点均应当使抽象类(或者Java接口)。 上图代码重构的例子就是里氏代换原则。 抽象类应当拥有 ...

    查看全文

  • 系统设计中的接口

    系统设计中的接口

    接口是实现系统组件可插入性的关键。 接口是一般操作特征的集合,从具体操作中来,具有操作的特征,没有操作的具体实现,这些特征在不同的地方被实现时,可以恰当地自由发挥。 JAVA语言有专门的Java接口来描述这种接口。 使用接口时要声明接口本身和实现该接口的类。一个类实现一个接口,这种关系叫做接口继承;一个类是另一个类的子类,这种关系叫做实现继承。Java中一个类有且仅有一个父类(默认继承Object类),但是可以同时实现多个接口。 接口是高度的抽象,Java接口拥有专门的用处,可以提供抽象类所不能提供的优越。 接口仅描述公共操作的特征以及公共属性,不给出具体实现,常常代表一个角色,包装与该接口 ...

    查看全文

  • 何时将条件转移语句改写为多态性

    何时将条件转移语句改写为多态性

    将条件转移语句改写为多态性是常用的代码重构方法。将一个进行多次条件转移的商业逻辑封装到不同的具体子类中去,从而使用多态性代替条件转移语句。 这种代码重构的方法是实现“开-闭”原则的重要途径,因为条件转移语句特别是大段的条件转移语句常意味着某种可变性。将这种可变性用多态性代替,意味着将这种可变性封装起来,从而带来系统在这种变化发生时的“开-闭”特性。 但是这种方法本身并不能保证实现“开-闭”原则,应当以“开-闭”原则为指导原则。因为: 任何语言都提供条件转移功能,条件转移本身并不是错误的,有适合的应用场景。 使用多态性代替条件转移意味着大量的类被创建。比如,一个类如果有三个方法,每个方法都有一 ...

    查看全文

  • 系统架构设计中的开-闭原则(OCP)

    系统架构设计中的开-闭原则(OCP)

    经典力学的基石是牛顿三大定律。面向对象的设计(Object Oriented Design 或 OOD)的第一块基石,便是所谓的“开-闭”原则(Open-Closed Principle,缩写为OCP)。 开-闭原则讲的是:一个软件实体应当对扩展开放,对修改关闭。 Software entities should be open for extension,but closed for modification. 在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。应当可以在不必修改源代码的情况下改变这个模块的行为。 软件系统面临新得需求时,系统的设计必须是稳定的。满足开-闭原则 ...

    查看全文

  • 建造者模式(设计模式)

    建造者模式(设计模式)

    1.概念 将一个复杂的对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 [构建与表示分离,同构建不同表示]     与抽象工厂的区别:在建造者模式里,有个指导者,由指导者来管理建造者,用户是与指导者联系的,指导者联系建造者最后得到产品。即建造模式可以强制实行一种分步骤进行的建造过程。 建造模式是将复杂的内部创建封装在内部,对于外部调用的人来说,只需要传入建造者和建造工具,对于内部是如何建造成成品的,调用者无需关心。   举个简单的例子,如汽车,有很多部件,车轮,方向盘,发动机还有各种小零件等等,部件很多,但远不止这些,如何将这些部件装配 ...

    查看全文