- 博客(13)
- 收藏
- 关注
原创 C++设计模式:构建器模式
构建器模式所创建的产品通常具有比较多的共同点,并且构成部分通常极为类似,如果产品之间的差异性较大,并且构建过程较为复杂且共同点并不是很统一时,构建器模式将不适合于本类需求,因此构建器模式的使用范围有着一定的限制,需要对具体情况做具体分析,避免盲目使用造成系统功能冗余。在系统中,构建器之前彼此独立,互不相关,因此在有新的需求进入系统时,整个系统能在不改变代码的基础上扩展新的功能,可以很方便地替换具体构建器或增加新的构建器,符合“开闭原则”,客户端只需使用不同的具体构建器即能获取到目标产品;
2024-04-08 20:23:19
1183
1
原创 C++设计模式:原型模式
在本案例中,如果对史莱姆的原型进行克隆,也就是分裂成不同的对象,而不同的史莱姆型号会对应着不同的技能,假设大型史莱姆是撞击,普通史莱姆是喷射,小型史莱姆是自爆,则简单地进行深克隆以及浅克隆可能会引起异常。因此,对此的解决办法便是原型模式结合状态模式使用,状态模式是指在软件构建过程中,某些对象的状态如果发生改变,其行为也会随之发生变化,使用状态模式将能允许一个对象在其内部状态发生改变时改变它的行为,从而使对象看起来似乎修改了其行为。,普通史莱姆转换成小型史莱姆,其中四只转换后的小型史莱姆共享血量(
2024-04-07 22:11:38
1476
1
原创 C++设计模式:抽象工厂方法
当客户端请求到达时,Servlet 容器根据请求的 URL 映射关系创建对应的 Servlet 对象,从而处理客户端请求。Spring 使用工厂方法来创建和管理各种类型的 bean(组件),这些 bean 可以是单例、原型、会话、请求或其他作用域的对象。电脑配件生产工厂生产内存、CPU等硬件设备,这些内存、CPU的品牌、型号并不一定相同,根据下面的“产品等级结构-产品族”示意图,使用抽象工厂模式实现电脑配件生产过程并绘制相应的类图,绘制类图并编程实现。同时,由于需求的变化,往往存在更多系列对象的创建工作。
2024-04-07 21:32:44
372
原创 C++设计模式:简单工厂模式
使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W,则返回一个Woman对象,请实现该场景。现需要增加一个新的Robot类,如果传入参数R,则返回一个Robot对象,对代码进行修改并注意女娲的变化。海尔工厂(Haier)生产海尔空调(HaierAirCondition),美的工厂(Midea)生产美的空调(MideaAirCondition)。Factory Method使得一个类的实例化延迟(目的:解耦,手段:虚函数)到子类。
2024-04-07 21:07:21
553
原创 C++设计模式:桥模式
在这些框架中,使用桥模式将抽象的组件(如按钮、文本框等)与具体的实现(如 Windows 实现、Linux 实现等)分离开来。例如,Swing 中的 JButton 类是抽象部分,而不同平台上的按钮实现(如 WindowsButton、LinuxButton)则是实现部分。在 Spring 中,桥模式通常用于将业务逻辑(如服务层、数据访问层)与具体的实现(如数据库、消息队列)解耦。由于某些类型的固有的实现逻辑,使得它们具有两个变化的维度,乃至多个纬度的变化。5.4 桥模式在主流框架中的应用。
2024-04-07 20:33:36
511
原创 C++设计模式:装饰器模式
C++ STL 中的迭代器和算法:C++ STL(标准模板库)中的迭代器和算法也是装饰者模式的一个应用。并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀。通过使用视图装饰器,我们可以在运行时动态地向视图函数添加额外的功能,例如权限验证、缓存控制等,而不需要修改原有的视图函数定义。Spring 框架中的 AOP(面向切面编程):Spring 框架中的 AOP 功能允许在不修改原有代码的情况下,通过添加切面来增强对象的功能。可以在运行时动态地向对象添加新的行为。
2024-04-06 18:27:19
453
1
原创 C++设计模式:观察者模式
Qt 中的信号和槽机制是一种观察者模式的实现。通过 connect() 函数,一个对象(信号发射者)可以将其信号连接到另一个对象(槽)的槽函数上。在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” ——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。Java 的事件处理机制:Java 中的事件处理机制就是观察者模式的一种应用。定义对象间的一种一对多(变化)的依赖关系,以便当一个对象(Subject)的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。
2024-04-06 17:33:45
666
1
原创 C++设计模式:模板方法
定义一个操作中的算法的骨架 (稳定),而将一些步骤延迟(变化)到子类中。Template Method使得子类可以不改变(复用)一个算法的结构即可重定义(override 重写)该算法的某些特定步骤。在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架与应用之间的关系)而无法和任务的整体结构同时实现。但是我们还会发现,这些步骤都是固定的,通过使用。# 本人学习时的笔记,有错必改,不喜勿喷 #
2024-04-05 20:34:18
254
1
原创 C++设计模式:设计原则1
被组合的对象通常被视为“黑箱”,因为外部类不需要了解被组合对象的内部实现细节,只需通过定义的接口与其交互。类继承的“白箱复用”:当一个类继承另一个类时,它会继承其父类的接口和实现细节,这就意味着子类可以直接访问父类的内部数据和方法。这样的复用被称为“白箱复用”,因为子类可以直接看到父类的实现细节,从而可能导致对父类实现的依赖,增加了耦合度。即接口应该设计得尽可能小,只包含客户程序需要的方法,而且这些方法应该是相关的,彼此之间的关系应该紧密。一个类应该只依赖于它需要的接口,而不应该依赖于它不需要的接口。
2024-04-01 19:41:42
873
原创 C++设计模式:设计原则0
根据SRP原则,可以将FileManager类拆分为两个单一职责的类:一个负责文件管理(如FileManager),另一个负责文件IO操作(如FileIOManager)。这样,当需要新增或替换具体实现类时,不需要修改Manager类,只需要修改Worker1和Worker2类或者增加新的实现类即可。如果一个类承担了多个职责,那么当其中一个职责发生变化时,可能会影响到其他职责,导致类的设计变得复杂和脆弱。如果一个类可能有多个变化的方向,那么就意味着它可能包含多个职责,应该考虑将其拆分为多个单一职责的类。
2024-04-01 18:35:00
922
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅