自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 设计模式:迭代器模式(Iterator)

迭代器模式(Iterator Pattern)是一种行为型设计模式,它提供了一种顺序访问集合对象元素的方法,同时不暴露集合对象的内部表示。迭代器模式的关键是将集合对象的遍历操作从集合类中抽离出来,封装成一个独立的迭代器类,这样可以在不改变集合对象结构的情况下,灵活地遍历集合对象。我通过一个Java示例进行分析。假设我们需要实现一个书籍列表类,该类可以存储书籍,并按顺序访问所有书籍。

2023-05-26 16:47:21 73 1

原创 设计模式:适配器模式(Adapter)

适配器模式的主要作用是将一个类的接口转换成客户期望的另一个接口,从而使原本接口不兼容的类可以一起工作。这种模式涉及到一个单独的类(适配器类),它负责在两个不同接口之间建立联系。现在,我们需要将该播放器与一个先进的媒体播放器集成,以便它也能播放视频文件。适配器模式是一种非常有用的设计模式,它可以帮助我们在不修改现有代码的情况下实现不同接口之间的兼容。当你需要在不修改现有代码的情况下使两个不兼容的接口协同工作时,可以考虑使用适配器模式。接口,它是一个先进的媒体播放器,能够播放视频文件。接下来,我们定义一个。

2023-05-25 19:49:28 73

原创 Git:SCM工具

而在Git中,每次你提交更新,或在 Git 中保存项目状态时,它主要对当时的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。Staging Area(暂存区),指Git仓库中的一个特殊区域,用于存储待提交的修改。Git的核心是一个称为“对象图”的数据结构,一个由多种类型的节点组成的有向无环图,它们通过指针连接。已提交(Committed),指文件已经被提交到代码仓库中,并且在代码仓库中被保存为一个新的版本。

2023-05-23 14:58:47 498 1

原创 软件构造的多维度视图

例如在语义层面使用“Lexical-oriented source code”(面向词法的源代码)编程风格,它强调使用词法单元(例如关键字、变量名、函数名等)来构建代码的结构和逻辑;在语法层面使用“Syntax-oriented program structure”(面向语法的程序结构)作为编程方法,它将程序结构的设计和实现与语法的定义和使用紧密结合起来,例如使用AST(“Abstract Syntax Tree”,抽象语法树,编译器或解释器在处理源代码时生成的一种树形数据结构);

2023-05-22 09:41:46 77 1

原创 Defensive Programming:防御式编程

通过在编写代码时考虑各种可能的错误情况,并采取相应的措施来防止这些错误,来确保程序在遇到异常情况时仍能正常运行。本文将介绍防御式编程的两个方面:保护程序免受无效输入的侵害(Protecting Programs From Invalid Inputs)和设置路障(Barricade)。为了防止这种错误,我们需要在代码中添加验证和错误处理机制,对来自外部的数据源仔细检查、对每个函数的输入参数合法性要做仔细检查,并决定如何处理非法输入,以确保程序在收到无效输入时能够正确地响应。方法中添加验证来实现这一点。

2023-05-21 21:39:08 150 1

原创 软件构造:单元测试基础

单元测试是一种软件开发技术,它涉及到在开发过程中对代码的各个独立模块或函数进行测试,以确保它们按预期运行。否则,JUnit框架会输出一条红色的提示信息表示测试失败。这个注解告诉JUnit框架这个方法是一个测试方法,JUnit框架会自动运行这个方法并检查其结果是否符合预期。使用测试框架:使用现有的测试框架,如Java的JUnit,简化编写和运行测试用例的过程。方法的三种情况:两个相等的正整数相减、两个零相减和一个正整数和一个负整数相减。提高软件质量:通过测试,可以确保代码的正确性和可靠性,减少软件中的缺陷。

2023-05-20 22:15:47 81 1

原创 OO Design Principles: SOLID

这样,如果未来需要添加新的形状,我们只需要添加一个新的Shape的子类,而不需要修改已有的代码。同时,我们还需要定义一个高层模块(如绘图软件的界面),遵照DIP原则,它的设计应该依赖于Shape接口而不依赖于具体的形状实现。比如在上面的例子中,如果我们遵循LSP原则,就应该保证每个形状都可以替换成Shape类的对象,并且不会影响程序的正确性。简单来说,ISP原则要求我们将接口设计得更加精细,尽量将不同的功能分离成不同的接口,使得客户端只需要依赖于它需要的接口,而不需要依赖于不需要的接口。

2023-05-20 21:30:31 117 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除