- 博客(11)
- 收藏
- 关注
原创 【设计模式】策略模式
我们用计算这一策略进行举例:在上面我们定义了关于计算的策略接口与具体的实现策略的具体类。我们可以动态的对我们的策略进行选择,到达自由切换算法的目的,而且具有很好的可扩展性。在某个具体的类中策略模式的设计方法非常直观,容易被我们所接受并在具体的编程中实现。在这个过程中,我们定义了一系列关于某一问题的不同算法,然后把它们进行封装,让他们可以相互替换,并且算法的变化不会影响到客户,在之后想要增加新的算法也很方便。但是我们也要注意到它将策略的具体实现类全都暴露给了用户,这有一定的好处,但是也有一定的弊端
2022-06-12 14:27:12
120
1
原创 【设计模式】装饰器模式
我们还是拿动物举例进行说明:在上面的例子中,我们先对Animal接口进行基本功能的实现,随后定义了抽象类Decorator装饰器,在装饰器中,首先我们需要注意的是它有一个rep为Animal animal,在构造函数中我们将会利用被传进来的animal,也就是我们想要装饰的对象对上面的rep进行赋值。随后对增加我们想要实现的新特性。!!!这里体现了装饰器与普通的继承的不同,我们并不是简单的对父类的方法进行override,而是在保持父类特性的基础上(super的调用),对方法增加新的特性,这样做不仅减少
2022-06-12 13:41:42
134
原创 【设计模式】适配器模式
适配器模式可以分两种:Target :客户所需要的接口。可以是接口,具体或抽象的类Adaptee: 需要适配的类Adapter: 适配器,把源接口转换为目标接口。在上面的代码中,首先适配器Adapter对目标接口进行implement,在具体的实现中,进行了具体方法的适配。客户端对抽象的接口Target进行编程,将任务委派给Target ,此时他并不知道也不需要知道具体的实现是由Adaptee进行完成的。...
2022-06-12 11:42:35
108
原创 【设计模式】 工厂方法模式
工厂方法模式可以分三种:我们举一个例子进行说明:假设Animal接口有两个具体的实现类Dog和Cat。我们在用户代码中并不想用Animal=new Dog()的方式创建实例,而是想尽可能的去隐藏掉我们的实现的具体类。我们可以定义一个Factory接口,让子类来决定具体实现哪一个类的实例化。通过这用的方式,我们在客户代码中就可以只提供接口中的方法CreatAnimal来进行实例化,而不需要去暴露出具体的实现类。我们通过Factory factory = new Factory1(); Animal A
2022-06-12 10:49:31
89
原创 【软件构造】override与overload总结
在学习与编程的过程中经常会遇到这两个基本的概念:override与overload,这两个概念虽然很简单,但是经常会出现混淆。所以在这里对这两个概念进行简单的总结。其中对override有以下的要求与特点:(1)子类中override方法的方法名、参数、返回值必须与父类相同。(2)子类方法的规约不可以比父类方法的规约弱(前置条件,后置条件,抛出异常)。(3)子类方法不能抛出比父类方法更多的异常,应该抛出相同的异常或者是异常子类(但子类方法可以不抛出异常)。较为特殊的是:(4)当方法被final修
2022-06-07 23:56:15
202
原创 【软件构造课程笔记】面向可维护的构造技术
第十章:面向可维护的构造技术软件维护:修复错误,改善性能。软件演化:对软件进行持续的更新。耦合:是模块之间依赖性的度量。两个模块耦合的程度取决于:最好的设计在模块内具有高内聚性(也称强内聚性),模块之间具有低耦合性(也称弱耦合性)不该有多于一个原因让你的ADT发生变化,否则就拆分开一个类一个责任在上一章中已经做了详细的介绍不能强迫客户端依赖于它们不需要的接口:只提供必需的接口抽象的模块不应该依赖于具体的模块具体应该依赖于抽象所以我们应该多使用接口和抽象类详细看下一章
2022-06-01 21:19:37
76
原创 【软件构造课程笔记】面向复用的软件构造技术
第九章:面向复用的软件构造技术软件复用:用已有的软件组成去实现或更新软件系统的过程。面向复用编程:开发出可复用的软件。基于复用编程:利用已有的可复用软件搭建应用系统。复用的优势:JDK和其他的第三方库为我们提供了大量的可复用APIs。就是去Ctrl+C,Ctrl+V。库:一组提供可复用方式的类和方法(API)的集合框架:一组具体类,抽象类,及其之间的连接关系开发者只需要根据framework的规约,填充自己的代码进去,形成完整的系统。框架的设计白盒框架:通过代码层次的基础进行框架的扩展黑盒
2022-06-01 17:20:48
247
原创 【软件构造课程笔记】设计规约
系列文章目录第五章:设计规约文章目录系列文章目录一、编程语言中的函数与方法1.方法二、 规约:程序的交流1. 程序文档(举例)2. 规约3. 行为等价性4. 规约的结构:前置条件和后置条件三、 设计规约1. 规约的分类(1). 规约的强弱(2). 规约的确定与不确定(3). 规约的操作式与声明式2.图形化规约3.设计一个好的规约(1). 内聚性coherent(2). 返回值应该信息丰富(3). spec应该足够强(4). spec应该足够弱(5). 应该使用抽象类型(6). 前置和后置条件提示:
2022-05-22 19:53:55
128
原创 【哈工大计算机系统大作业】
计算机系统大作业题 目 程序人生-Hello’s P2P 专 业 计算机学院 学 号 xxxxxxxxxx 班 级 xxxxxxx 学 生 xxx 指 导 教 师 xx 计算机科学与技术学院202...
2022-05-18 21:54:38
844
原创 【软件构造课程笔记】数据类型与类型检查
系列文章目录第四章: Data Type and Type Checking文章目录系列文章目录前言一、程序语言中的数据类型1. java中的数据类型2. 对象类型的形成层次结构3. 封装基本数据类型4. 操作5. 重载二、静态与动态类型检验1. 静态类型检验2. 动态类型检验三、可变类型与不可变类型1. 不可变性2. String vs StringBuilder3. 可变的隐含危险4. 防御式拷贝四、snapshot diagram五、 复杂数据类型1. Array2. List3. Iter
2022-05-15 21:17:29
221
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人