- 博客(14)
- 收藏
- 关注
原创 【笔记】抽象工厂模式
抽象工厂模式定义抽象工厂模式提供了一个创建一系列相关或者相互依赖对象的接口无需指定它们具体的类类型创建型适用场景客户端(应用层)不依赖于产品类实例如何被创建,实现等细节强调一系列相关产品的对象(属于同一产品族)一起使用创建对象- - 需要大量的重复代码提供一个产品类的库,所有产品以同样的接口出现,从而使客户端不依赖于具体实现优点具体产品在应用层代码隔离,无需关心创建细节将一个系列的产品族统一到一起创建缺点规定了所有可能被创建的产品集合,产品族中扩展新的产品困难,
2020-06-07 22:21:13
125
原创 【笔记】工厂方法模式
工厂方法模式定义定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行类型创建型使用场景创建对象需要大量重复的代码客户端不依赖于产品类实例如何被创建,实现等细节一个类通过其子类来指定创建那个对象优点用户只需要关系所需产品对应的工厂,无需关心创建细节加入新产品符合开闭原则,提高可扩展性缺点类的个数容易过多,增加复杂度增加了系统的抽象性和理解难度源码中的应用JDK Collection.iteratorJDK
2020-06-07 13:01:46
135
原创 【笔记】简单工厂模式
简单工厂-定义与类型定义由一个工厂对象决定创建出哪一种产品类的实例类型创建型,但不属于GOF23种设计模式适用场景工厂类负责创建的对象比较少客户端(应用层)只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心优点只需要传入一个正确的参数,就可以获取你所知道的对象,而无需知道其创建的细节缺点工厂类的职责相对过重,增加新的产品需要修改工厂类的判断逻辑,违背开闭原则在框架的使用JDK Calendar.getInstanceslf4j ILoggerFactor
2020-06-07 11:56:46
165
1
原创 【笔记】合成(组合/聚合)复用原则
合成(组合/聚合)复用原则定义尽量使用对象组合,聚合,而不是继承关系达到软件复用的目的聚合has-A的关系,组合是contains-A的关系,继承是is-A的关系优点可以使系统更加灵活,降低类与类之间的耦合度,一个类的变化对其他类造成的影响相对较少代码示例/** * 合成(组合/聚合)复用原则 */public class Composition { public static void main(String[] args) { ProductD
2020-06-06 18:23:17
318
原创 【笔记】里式替换原则
里式替换原则定义如果每一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有对象o1都替换成o2时,程序p的行为没有发生任何变化,那么类型T2是类型T1的子类型一个软件实体适用于一个父类的话,那一定适用于其子类,所有引用父类的地方必须能够透明地使用其子类的对象,子类对象能够替换父类对象,而程序逻辑不变子类可以扩展父类的功能,但是不能改变父类原有的功能子类可以实现父类的抽象方法,但是不能覆盖父类的非抽象方法子类中可以增加自己特有的方法子类的方
2020-06-06 17:52:54
180
原创 【笔记】迪米特原则
迪米特原则定义一个对象应该对其他对象保持最少的了解,又叫最少知道原则尽量降低类与类之间的耦合强调只和朋友交流,不和陌生人说话朋友出现在成员变量,方法的输入,输出参数中的类称为成员朋友类,而出现在方法体内部的类不属于朋友类优点降低类之前的耦合代码示例import java.util.ArrayList;import java.util.List;/** * 迪米特原则 */public class demeter { public static
2020-05-31 18:08:06
124
原创 【笔记】接口隔离原则
接口隔离原则** 定义**用多个专门的接口,而不是使用单一的总接口,客户端不应该依赖它不需要的接口一个类对一个类的依赖应该建立在最小的接口上建立单一接口,不要建立庞大臃肿的接口尽量细化接口,一个接口中的方法尽量少适度原则,一定要适度(最重要的点)优点符合我们常说的高内聚,低耦合的设计思想,从而使得类具有很好的可读性,可扩展性和可维护性代码示例/** * 接口隔离原则 */public class Interface {}/** * 动物行为,此种定义会存在许多空实现
2020-05-31 17:41:54
221
原创 【笔记】单一职责原则
单一职责原则定义不要存在多于一个导致类变更的原因一个类,接口,方法只负责一项职责优点降低类的复杂度,提高类的可读性,提高系统的可维护性,降低变更引起的风险代码示例/** * 单一职责原则 */public class SingleResponse { public static void main(String[] args) {// Bird bird = new Bird();// bird.mainMoveMode("大雁");/
2020-05-31 17:16:04
187
原创 【笔记】依赖倒置原则
依赖倒置原则定义高层模块不应该依赖底层模块,二者都应该依赖其抽象抽线不应该依赖细节,细节应该依赖于抽象针对接口编程,而不是针对实现编程优点可以减少类之间的耦合性,提高系统的稳定性,提高代码的可读性和维护性,可降低修改程序所造成的风险代码示例/** * 依赖倒置原则 */public class Dependent { public static void main(String[] args) { Jack jack = new Jack();
2020-05-30 22:25:38
89
原创 【笔记】开闭原则
开闭原则(非常重要的原则)定义一个软件实体如类,模块和函数应该对扩展开放,对修改关闭用抽象构建框架,用实现扩展细节优点提高软件系统的可复用性,可维护性核心思想面向抽象编程,当有新的功能时应该不需要修改之前的代码,而是新增代码示例/** * 开闭原则 */public class OpenClose { public static void main(String[] args) { Course course = new JavaDiscount
2020-05-30 21:45:54
130
原创 【笔记】UML快速入门
UML定义统一的建模语言非专利的第三代建模和规范语言特点UML是一种开发的方法用于说明,可视化,构建和编写一个正在开发的面向对象的,软件密集系统的制品的开发方式UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效UML2.2中一共定义了14种图式结构式图形:强调的是系统中的建模静态图(类图(非常重要),对象图,包图)实现图(组件图,部署图)剖面图复合结构图行为式图形:强调系统建模时触发的事件活动图
2020-05-16 23:53:35
212
原创 【笔记】 Lambda表达式
Lambda表达式也称为箭头函数,匿名函数,闭包Lambda表达式体现的是轻量级函数式编程思想 ->符号是Lambda表达式核心操作符号,符号左侧是参数,右侧是操作表达式jdk8的新特性使用Lambda创建线程 new Thread(() -> { // 需要执行的代码 }).start();为什么使用Lanbda它不是解决未知问题的新技术对现有解决方案的语义优化需要根据实际需求考虑性能问题函数式接口函数式接口就是java类型系统中的接口函数
2020-05-14 22:58:09
230
原创 【笔记】IDEA快捷键
CTRL + SHIFT + A 搜索快捷键ALT + 1 调出工程ALT + 2 调出收藏CTRL + O 重写方法跳转CTRL + ALT + [ 跳转到下个idea窗口CTRL + ALT + ] 跳转上一个idea窗口CTRL + E 展示一天操作过的文件(包括jar包里的文件)CTRL + SHIFT + bacjsoace 跳转到上一次编辑的地方ALT + 右 跳...
2020-04-26 21:20:51
223
原创 【笔记】内部类
可以将一个类的定义放到另一个的内部,这就是内部类成员内部类定义在类的内部,类似: class A { class B{} public B c() { return new B(); } }在类中的非静态方法要创建B的对象可以直接B b = c()初始化静态方法则需要加上外部类的对象,并且需要先创建外部类对象:A a = new A();A.B b...
2020-02-20 12:59:25
113
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人