- 博客(13)
- 收藏
- 关注
原创 网络程序设计课程报告
本项目是基于socket.io的即时聊天室项目,通过socket.io对登录、收发消息等事件进行监听并在前端页面上进行显示。前端部分技术栈选用Vue3+ElementUI-Plus。在本学期的网络程序设计课程中,我学习到了很多以前没有接触过的知识,通过这门课程,使我对socket编程,到gRPC,再到Linux内核网络协议栈都有了可谓是从0到1的理解。总之,感觉孟宁老师的辛勤教导,使我在这门课程中收获了许多。
2023-12-26 15:41:00
931
1
原创 设计模式(11)—— 外观模式
定义:外部与一个子系统的通信通过一个统一的外观角色进行,为子系统中的一组接口提供一个一致的入口。外观模式定义了一个高层接口,这个接口使得子系统更加容易使用。如上图所示,图(a)中,客户端和业务模块之间的调用关系非常复杂,而图(b)中引入了外观角色,使客户端对业务模块的调用通过Facade外观角色实现,降低了系统的耦合度下图是一个典型的外观模式的结构图Facade(外观角色)SubSystem(子系统角色)外观模式的主要目的在于降低系统的复杂程度,降低系统内部的耦合性。
2023-08-16 10:10:36
85
1
原创 设计模式(10)—— 装饰模式
定义:动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。简单地说,装饰模式就是可以在不改变对象本身的前提下,为对象增加新的功能。例如,对于一张照片,可以在不改变照片本身的情况下,为照片配置一个相框,而且可以根据用户不同的需要,为它配置不同的相框,甚至可以在小相框外面再套上一层大相框。Component(抽象构件)ConcreteComponent(具体构件)Decoration(抽象装饰类)ConcreteDecoration(具体装饰类)
2023-08-15 09:52:22
88
原创 设计模式(9)—— 组合模式
定义:组合多个对象形成树形结构以表示具有“部分—整体”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,又可以称为“部分—整体”(Part-Whole)模式引入抽象构件类Component,所有容器和叶子类都是它的子类,客户端也针对它进行编程Component(抽象构件)Leaf(叶子构件)Composite(容器构件)
2023-08-14 12:59:36
68
原创 设计模式(8)—— 桥接模式
定义:将抽象部分与其实现部分分离,使它们都可以独立的变化。又称为柄体模式或接口模式Abstraction(抽象类)RefinedAbstraction(扩充抽象类)Implementor(实现类接口)ConcreteImplementor(具体实现类)在使用桥接模式时,应该识别出一个类中存在的两个独立变化的维度,并将他们设计成两个独立的继承等级结构。
2023-08-11 10:43:40
74
1
原创 设计模式(7)—— 适配器模式
定义:将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以协同工作,适配器又名包装器在适配器模式中引入了一个称为适配器的包装类,而被适配器包装的对象叫做适配者,即被适配的类。适配器的实现实际上就是把客户端的请求转换成对适配者相应接口的调用当客户端调用适配器的方法时,适配器在内部自动调用相应的适配者接口,内部过程对客户端而言是透明的Target(目标抽象类)Adapter(适配器类)Adaptee(适配者类)
2023-08-10 09:39:59
78
1
原创 设计模式(6)—— 建造者模式
定义:将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式允许用户只通过指定复杂对象的类型和内容就可以构建它们,而不需要了解内部的具体构建细节Builder(抽象建造者):为创建一个产品的各个部件指定抽象接口,该接口中一般声明两类方法:一类方法是:buildPartX,负责创建复杂对象的各个组件;另一类方法是getResult,用于返回复杂对象ConcreteBuilder(具体建造者):实现抽象建造者类中的各个方法,定义并明确自己所要创建的产品类型。
2023-08-09 10:05:52
63
原创 设计模式(5)—— 原型模式
定义:使用原型实例指定创建对象的种类,并且通过克隆这些原型来创建新的对象工作原理:将需要克隆的原型对象传递给负责创建新对象的对象,这个对象再通过请求原型对象克隆原型对象自身,从而实现新对象的创建过程克隆出的对象与原型对象之间的关系是完全独立的,对新对象进行修改不会影响原型对象Prototype(抽象原型类)ConcretePrototype(具体原型类)Client(客户类)
2023-08-08 11:07:03
40
原创 设计模式(4)—— 抽象工厂模式
产品等级结构即产品的继承结构例如,手机是一个抽象类,其子类有苹果手机,小米手机,华为手机等这些具体手机和抽象手机构成了一个产品等级结构,抽象手机是父类,不同品牌的具体手机是子类定义:提供一个创建一系列相关或互相依赖着的对象的接口,而无需指定具体的类。抽象工厂模式又称为Kit模式,它是一种对象创建型模式AbstractProduct(抽象产品类)ConcreteProduct(具体产品类)AbstractFactory(抽象工厂类)ConcreteFactory(具体工厂类)
2023-08-07 10:17:15
41
原创 设计模式(3)——工厂方法模式
定义一个用于创建对象的接口,让子类决定具体将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。工厂方法模式简称工厂模式,又称虚拟构造器模式多态工厂模式工厂方法模式中,不再提供一个统一的工厂类来创建所有的产品对象,而是针对不同的产品提供不同的工厂Product(抽象产品)ConcreteProduct(具体产品):实现抽象产品接口,某种类型的具体产品由专门的具体工厂创建,具体产品和具体工厂之间具有一一对应的关系Factory(抽象工厂)
2023-08-07 08:49:52
136
原创 设计模式(2)——简单工厂模式
定义一个工厂类,它可以根据不同的参数返回不同类的实例,而这些不同的实例都有着共同的父类。当需要的时候,只需要传入参数,就可以获得实例对象,而无需关注具体的创建细节。Factory(工厂角色)简单工厂模式的核心,负责实现所有实例创建的具体逻辑,创建方法可以被外界直接调用,并以父类Product返回Product(抽象产品角色)是所有具体产品的父类,定义了所有产品的公共方法,同时通过多态的方式,使Factory类中只需要定义一个创建函数就可以返回各个不同种类的具体实例。
2023-08-04 09:29:29
62
1
原创 设计模式(1)——单例模式
这里仿照Windows任务管理器,进行一个建议的Java单例实现public void displayProcesses(){} //显示进程public void displayServices(){} //显示服务return tm;将构造方法私有化,保证无法通过外部调用创建新实例在类内创建静态变量tm存储我们需要得到的单一实例对外提供静态方法getInstance创建这个实例,同时保证唯一性。
2023-08-03 10:00:20
35
原创 一文读懂面向对象设计的七大原则
当数据库改变时,创建OracleDBUtil类,继承DBUtil类,并重写getConnection方法,想要连接新的数据库时,根据里氏代换原则,只需要将DBUtil的子类OracleDBUtil类注入CustomerDAO的util属性,仍然调用getConnection方法即可连接新的数据库,无需更改CustomerDAO的代码,只需要改变注入就可改变数据库。将接口进行拆分,拆分的时候要控制好拆分的粒度,既不要过小也不要过大,过小则导致系统接口泛滥,不易于维护,过大则违背了接口隔离原则,不够灵活。
2023-08-02 15:33:38
50
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人