自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CRP(Common Reuse Principle,共用原则)

CRP(Common Reuse Principle,共用原则)是面向对象编程中的一个重要原则,它要求软件实体(类、模块、函数等)应该共用,而不是重复。通过这种方式,我们遵循了CRP原则,将计算所有图形面积之和的方法设计成一个可复用的工具方法,避免了重复实现类似的功能,提高了代码的可复用性和可维护性。,并且我们知道这个方法可能会被其他模块或类重复使用,因此我们需要遵循CRP原则,尽量将方法设计成可复用的,避免重复实现类似的功能。中,这样其他模块或类就可以直接使用它,而不需要重复实现类似的功能。

2023-05-26 22:07:14 113 1

原创 OCP(Open/Closed Principle,开闭原则)

通过这个例子,我们可以看到OCP原则的应用,它通过封装、抽象和多态等技术,使得我们能够在不修改原有代码的情况下,通过扩展来实现新的功能,从而提高了代码的可扩展性和可维护性。,但是我们不知道将来会有哪些新的图形类加入到程序中,因此我们需要设计一个可扩展的方法,能够接受新的图形类而不需要修改原有的代码。为了实现这个目标,我们可以使用工厂模式,将具体的图形对象的创建过程封装到一个工厂类中。方法时,我们应该尽量避免修改原有的代码,而是通过扩展来实现新的功能。来创建具体的图形对象,而不需要修改原有的代码。

2023-05-26 21:40:54 64 1

原创 LSP(Liskov Substitution Principle,里氏替换原则)

LSP(Liskov Substitution Principle,里氏替换原则)是面向对象编程中的一个重要原则,它要求子类对象能够替换其父类对象,而不会影响程序的正确性。通过这个例子,我们可以看到LSP原则的应用,它允许我们在不影响程序正确性的情况下,使用子类对象替换其父类对象,从而提高了代码的灵活性。类型的数组作为参数,返回数组中所有图形的总面积。根据LSP原则,我们应该能够将子类对象替换为其父类对象,而不会影响程序的正确性。例如,我们可以创建一个包含两个矩形和一个正方形的数组,并将其传递给。

2023-05-26 20:51:10 144 1

原创 静态变量/方法(static)和实例变量/方法(instance)

因为静态变量是属于类的,而不是属于对象的,所以所有属于同一个类的对象共享同一个静态变量的值,这意味着静态变量只有一份内存空间,并且在程序运行期间始终存在。也就是说,如果你创建了多个属于同一个类的对象,它们共享同一个静态变量/方法的值,而不像实例变量/方法那样每个对象都有自己的值。静态变量是存储在静态数据区的,而实例变量则存储在对象的堆内存中。总之,静态变量/方法是属于类的,而实例变量/方法是属于对象的。静态变量/方法可以被所有属于同一个类的对象共享,而实例变量/方法是每个对象独有的。

2023-05-26 15:44:27 372 1

原创 策略模式(Strategy Pattern)

最后在`Main`类中,我们创建了一个`int`类型的数组,包含5个整数,然后创建了一个`Sorter`对象,初始化时使用`BubbleSortStrategy`作为排序策略。这样一来,我们就可以动态地切换排序算法了。接着我们定义了一个`Sorter`类,它包含一个`SortStrategy`类型的成员变量,并提供了一个`setStrategy()`方法,用于动态设置排序策略。在`Sorter`类的`sort()`方法中,我们调用`SortStrategy`对象的`sort()`方法来完成排序任务。

2023-05-25 22:36:24 34 1

原创 委派模式(Delegate Pattern)

这样一来,我们就可以通过PrinterDelegate对象来统一调用不同类型的打印机的print()方法,实现了任务的委派。在PrinterDelegate类的print()方法中,我们将任务委派给了这个成员变量的print()方法。总的来说,委派模式是一种常见的设计模式,它可以将任务的实现委派给其他对象来完成。在Java中,我们可以通过接口和实现类来实现不同的功能模块,并使用委派模式将它们组合起来,实现更加复杂的功能。需要注意的是,这个示例代码中的委派模式是静态委派,也就是在编译期间就确定了委派关系。

2023-05-25 21:04:12 45 1

原创 错误和异常

可检查异常是程序必须显式处理的异常,可以通过捕获它们或声明抛出异常的方法来处理它们。由于这些错误是不可预期的,程序员通常无法显式地处理这些异常,因此Java允许在方法中不显式处理这些异常。当在Java中抛出异常时,程序会停止执行当前方法,并查找可以处理异常的方法。例如,在下面的代码中,我们尝试访问一个不存在的数组索引,这会导致ArrayIndexOutOfBoundsException异常的抛出。如果在try块中抛出ExceptionType类型的异常,则程序跳转到catch块,其中处理异常。

2023-05-25 13:03:16 36 1

原创 面向可复用性和可维护性的设计模式

当我们想要计算每个形状的面积时,我们可以创建一个`AreaCalculator`对象,并将它传递给每个形状的`accept()`方法。在工厂方法模式中,我们定义一个工厂接口,它包含一个用于创建对象的工厂方法。此外,装饰器模式还可以通过组合不同的装饰器类来创建多种不同的行为组合,从而提高代码的灵活性和可复用性。使用工厂方法模式的优点是可以将对象的创建过程和使用过程分离,从而提高代码的可维护性和可扩展性。在这个模式中,我们定义了一个访问者(Visitor)类,它可以访问对象结构中的每个元素,并执行特定的操作。

2023-05-23 23:07:26 99

原创 测试优先编程

等价类划分基于系统的输入和输出,将输入和输出划分为不同的等价类,每个等价类代表一组相似的输入或输出。更高的代码质量:TFP可以帮助我们编写更高质量的代码,因为测试代码可以确保代码的正确性和可靠性。更快的开发速度:与传统的开发方法相比,TFP可以帮助我们更快地开发代码,因为测试代码可以更早地发现代码中的错误和问题,并且在编写实际代码之前就解决这些问题。这可以减少后期调试和修复代码的时间。更好的文档性:TFP可以帮助我们更好地记录代码的行为和预期结果,因为测试代码可以描述代码的行为和预期结果。

2023-05-23 20:59:04 81

空空如也

空空如也

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

TA关注的人

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