- 博客(17)
- 收藏
- 关注
原创 服务科学与工程笔记
运用服务科学相关理论和知识,面向服务生命周期,描述和定义、设计、 建立、实施、运行维护和动态重构服务系统,并提供相关服务系统支撑工具和平台/ 环境,进而创造服务价值。
2024-11-10 22:10:51
492
原创 黑盒框架的原理与实现
首先,定义一个简单的配置文件定义一个接口Greeter黑盒框架通过封装复杂的逻辑和实现细节,通过配置和接口提供功能,使得开发人员可以轻松使用。虽然黑盒框架在易用性和封装性上有明显优势,但在灵活性和调试方面可能会存在一些挑战。理解和正确使用黑盒框架,可以帮助开发人员提高开发效率和代码质量。
2024-05-27 23:23:04
1145
1
原创 白盒框架的原理与实现
/ 模板方法endPlay();// 抽象方法(钩子方法)白盒框架通过继承和方法覆盖等面向对象的技术,提供了灵活的扩展和定制能力。尽管需要开发人员深入理解框架的内部实现,但它为复杂系统的开发提供了高度的灵活性和代码复用性。通过合理设计抽象基类和钩子方法,可以创建强大的白盒框架,满足各种复杂的业务需求。
2024-05-27 23:21:38
1174
原创 CRP原则
CRP原则的核心思想是优先使用组合/聚合而不是继承来实现代码复用。组合/聚合通过在类中包含其他类的实例来实现功能的扩展和复用,而不是通过继承父类来获得其功能。定义:合成复用原则(CRP)建议优先使用组合而不是继承来实现代码复用。优点:松耦合、增强复用、更符合现实世界的模型。示例:通过组合实现的报表生成更加灵活和易于维护,而通过继承实现的方式可能会增加系统的复杂性。通过遵循CRP原则,可以设计出更加灵活、可维护和可扩展的系统,减少代码的耦合度,提高代码的复用性和开发效率。
2024-05-27 23:19:08
436
原创 Comparator和Comparable
compareTocompareComparable:用于定义对象的自然排序。通过实现Comparable接口并覆盖compareTo方法来实现。适用于只需要一种排序标准的场景。Comparator:用于定义自定义排序。通过实现Comparator接口并覆盖compare方法来实现。适用于需要多种排序标准的场景。理解并正确使用这两个接口,可以让你更灵活地对对象进行排序,编写出更加简洁和高效的代码。
2024-05-27 23:18:16
421
原创 委托(Delegation)
委托(Delegation):一种设计模式,将对象的任务或行为的执行委托给另一个对象。优点:提高灵活性、实现代码复用、简化继承关系。实现方式:可以通过接口实现、匿名类和Lambda表达式来实现委托。委托模式通过组合而非继承来实现对象间的行为共享和代码复用,使设计更加灵活和可维护。理解并应用委托模式,可以帮助开发人员编写高质量的面向对象代码。
2024-05-27 23:16:57
402
原创 泛型的子类型化
泛型的子类型化规则:Java 泛型类型之间的继承关系不直接对应于普通类型的继承关系。不是的子类型。协变通配符?extends T:允许使用 T 的子类型,适用于只读场景。逆变通配符?super T:允许使用 T 的父类型,适用于写入场景。泛型方法与通配符:使用通配符可以实现类型安全的泛型方法,使其能够处理多种类型。通过理解和正确使用泛型的子类型化规则和通配符,可以编写更加灵活和安全的泛型代码。
2024-05-27 22:46:22
479
原创 数组的子类型化
数组的子类型化:Java允许数组的子类型化,即B[]是A[]的子类型,如果B是A的子类型。这种机制支持多态性,但需要运行时类型检查,可能导致。运行时类型检查:为了确保类型安全,Java在数组赋值时进行运行时类型检查。如果尝试存储不兼容的对象,会抛出。优缺点:数组的子类型化提供了灵活性和多态性,但也带来了运行时开销和潜在的运行时错误。泛型中的子类型化:相比之下,Java泛型使用通配符?extends T和?super T来实现类型安全的子类型化,避免了数组子类型化的问题。
2024-05-27 22:45:02
383
原创 协变(Covariance)和反协变(Contravariance)
协变(Covariance):允许子类型转换为父类型,主要应用于返回类型。例如,List
2024-05-27 22:41:57
459
原创 Programing for/with reuse
特性目的创建通用、可重用的代码和模块重用现有的代码、库和框架,提高开发效率关键实践模块化、封装、抽象、文档、测试使用库和框架、复用模块、依赖管理、代码审查代码创建从头开始设计和编写具有通用性的代码重用已有的代码,减少重复开发优点提高代码的通用性和可重用性,减少未来的开发工作量提高开发效率和代码质量,减少开发时间关注的是如何设计和编写可重用的代码,而关注的是如何有效地重用已有的代码。在实际开发中,这两种方法经常结合使用,以最大化代码的重用性和开发效率。
2024-05-27 21:36:16
760
原创 ADT操作的四种类型
创建者(Creator):生成新的ADT实例,确保其初始状态。生成器(Producer):从现有ADT实例生成新的ADT实例,不修改现有实例。观察者(Observer):检索ADT的状态或属性,不修改其状态。修改器(Mutator):修改ADT的状态,如添加、删除或更新元素。理解和区分这四种操作类型,有助于设计清晰、维护性好的ADT,实现数据的有效管理和操作。
2024-05-27 20:09:27
464
原创 值的改变、引用的改变、final
值的改变:直接修改变量存储的值。引用的改变:修改引用类型变量所指向的对象。final关键字修饰基本类型变量:值不可改变。修饰引用类型变量:引用不可改变,但引用的对象的内部状态可以改变。修饰方法:方法不可重写。修饰类:类不可继承。理解这些概念有助于编写更加健壮和安全的代码,特别是在处理不可变对象、设计类层次结构和保证方法行为一致性时。
2024-05-27 19:51:05
338
原创 Git的结构、工作原理、基本指令
Git是一种强大的版本控制工具,通过它可以轻松管理项目的各个版本,协同团队开发。了解其基本结构和工作原理,并掌握常用的基本指令,可以极大地提高开发效率和代码管理能力。
2024-05-27 19:19:45
399
原创 装饰器模式(Decorator设计模式)
Decorator设计模式是一种结构型设计模式,它允许在不改变对象自身的情况下动态地向对象添加新的功能。通过Decorator设计模式,我们可以动态地扩展对象的功能,并且可以根据需要灵活地组合这些功能,从而提高代码的可维护性和可扩展性。3. Decorator(装饰器): 持有一个Component对象的引用,并定义一个与Component接口一致的接口。1. 扩展性强: Decorator模式允许你通过创建新的装饰类来添加新的功能,而无需修改现有代码。
2024-05-27 09:13:13
142
原创 面向ADT的编程和直接面向应用场景编程的区别
在实验设计的ADT在三个不同的应用场景下使用时,可以体会到复用的好处。通过使用相同的ADT,可以避免在不同场景下重复编写相似的代码,提高了代码的可维护性和可重用性。同时,当需要对ADT进行修改或者优化时,只需要在ADT的定义处进行修改,而不需要在各个应用场景下都进行修改,这样可以减少错误的产生和修改的工作量。在这种方式下,开发者首先设计和实现数据类型的接口和操作,然后在需要的地方使用这些已经定义好的数据类型和操作。这种方式下,代码通常更加与应用紧密相关,可能会存在较多的重复代码和耦合性较高的问题。
2024-05-26 11:51:04
376
原创 idea从github上克隆空项目失败“repository not found”
如图,我试图通过idea克隆github上的空项目,但经过多次错误后还是无法获得权限,但克隆非空的项目就成功了,我猜测是idea的克隆无法支持空项目,于是用git终端克隆空项目成功了。
2024-03-19 19:22:32
400
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人