![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
设计模式
wydxry
红叶经霜而赤,腊梅沐雪而馨!
展开
-
设计模式:中介者模式(C++实现)
在上述代码中,Mediator是中介者接口,定义了发送消息的方法。ConcreteColleagueA和ConcreteColleagueB是具体的同事类,实现了同事接口。ConcreteMediator是具体的中介者类,实现了中介者接口,并维护了同事对象的列表。在main函数中,我们创建了中介者对象和两个具体同事对象,并将同事对象添加到中介者中。然后,同事对象可以通过中介者来发送消息,并且中介者会将消息传递给其他同事对象。在中介者模式中,中介者对象负责协调多个对象之间的交互,将对象之间的耦合度降低。原创 2023-09-24 11:19:13 · 400 阅读 · 0 评论 -
设计模式:访问者模式(C++实现)
在上述代码中,Visitor是访问者接口,定义了访问具体元素的方法。Element是元素接口,定义了接受访问者访问的方法。ObjectStructure是对象结构类,用于管理元素的集合,并提供接受访问者访问的方法。在main函数中,我们创建了具体元素A和B的实例,并将它们添加到对象结构中。然后创建了具体访问者的实例,并调用对象结构的accept方法,将访问者应用于所有元素。输出结果会显示访问者对不同元素的访问和操作。访问者模式通过将对元素的操作与元素本身分离,使得可以在不修改元素类的情况下定义新的操作。原创 2023-09-24 10:55:46 · 402 阅读 · 0 评论 -
设计模式:迭代器模式(C++实现)
迭代器模式是一种行为型设计模式,用于提供一种遍历集合对象的统一接口。原创 2023-09-24 10:36:59 · 280 阅读 · 0 评论 -
设计模式:策略模式(C++实现)
在 main() 函数中,我们首先创建了两个具体策略对象 strategy1 和 strategy2,然后创建了一个 Context 对象 context,并将 strategy1 设置为当前策略,最后调用 executeStrategy() 函数,输出的是 “Executing Concrete Strategy 1”。Context 类中的 setStrategy() 函数用于设置当前策略,executeStrategy() 函数用于调用当前策略的 execute() 函数。原创 2023-09-22 16:57:50 · 695 阅读 · 0 评论 -
设计模式:模板方法模式(C++实现)
模板方法中调用了两个抽象方法 primitiveOperation1() 和 primitiveOperation2(),这两个方法需要在子类中实现。然后,我们创建了两个具体子类 ConcreteClass1 和 ConcreteClass2,它们分别实现了抽象方法 primitiveOperation1() 和 primitiveOperation2()。通过定义一个模板方法和一些抽象方法,我们可以将公共的算法骨架放在基类中,将具体实现延迟到子类中,从而实现代码的复用和扩展。原创 2023-09-22 16:24:28 · 363 阅读 · 0 评论 -
设计模式:状态模式(C++实现)
Context是环境类,维护一个指向当前状态对象的指针,并提供了设置状态和处理请求的方法。通过调用setState()方法来设置当前状态,然后通过调用request()方法发送请求,环境对象会根据当前状态来进行相应的处理。状态模式可以将对象的行为封装在不同的状态类中,使得状态的切换对于对象来说是透明的。状态模式还可以避免使用大量的条件语句来判断对象的状态,提高代码的可读性和可维护性。状态模式将对象的行为封装在不同的状态类中,使得状态的切换对于对象来说是透明的。具体状态类根据自己的状态来实现相应的处理逻辑。原创 2023-09-22 15:57:33 · 407 阅读 · 0 评论 -
设计模式:责任链模式(C++实现)
然后通过调用handleRequest()方法来发送请求,责任链会按照设置的顺序依次处理请求,直到找到能够处理请求的处理者为止。在上述示例中,Handler是抽象处理者类,定义了处理请求的接口和设置后继处理者的方法。责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它能够将请求从一个处理者传递到下一个处理者,直到找到能够处理请求的对象为止。如果不能处理,则将请求传递给下一个处理者(successor),直到找到能够处理请求的处理者为止。原创 2023-09-20 10:57:08 · 403 阅读 · 0 评论 -
设计模式:享元模式(C++实现)
如果工厂中不存在对应的享元对象,则创建一个新的享元对象并将其存储在工厂中;如果已存在对应的享元对象,则直接返回该对象。在上述示例中,Flyweight是抽象享元类,定义了享元对象的接口。享元模式(Flyweight Pattern)是一种结构设计模式,它通过共享对象来有效地支持大量细粒度的对象。享元模式的目标是尽量减少内存使用,通过共享相同的数据来减少对象的数量。通过享元模式,可以减少对象的数量,节省内存空间。享元模式适用于需要创建大量相似对象的场景,可以提高系统的性能和效率。原创 2023-09-20 10:14:36 · 358 阅读 · 1 评论 -
设计模式:外观模式(C++实现)
外观模式(Facade Pattern)是一种结构设计模式,它提供了一个统一的接口,用于访问子系统中的一组接口。外观模式隐藏了子系统的复杂性,使得客户端只需要与外观对象交互,而不需要直接与子系统中的对象进行交互。Facade是外观类,它持有子系统类的对象,并提供了一个统一的接口operation()用于访问子系统的操作。通过调用外观类的operation()方法,实现了访问子系统类的操作。通过外观模式,可以简化客户端与子系统之间的交互,提供了一个统一的接口,隐藏了子系统的复杂性。原创 2023-09-20 09:07:04 · 509 阅读 · 0 评论 -
设计模式:桥接器模式(C++实现)
在main()函数中,首先创建了一个具体实现类ConcreteImplementorA的对象,并将其传递给扩展抽象类RefinedAbstraction的构造函数,创建了一个抽象类对象abstractionA。然后,创建了一个具体实现类ConcreteImplementorB的对象,并将其传递给扩展抽象类RefinedAbstraction的构造函数,创建了另一个抽象类对象abstractionB。Abstraction是抽象类,包含了一个实现接口的成员变量,并定义了抽象部分的操作方法。原创 2023-09-19 21:15:42 · 391 阅读 · 0 评论 -
设计模式:适配器模式(C++实现)
在适配器类的request()方法中,调用了适配的对象的specificRequest()方法。通过将适配的对象传递给适配器的构造函数,将适配的对象转换为目标接口。最后,通过调用适配器的request()方法,实现了适配的对象的方法调用。适配器模式(Adapter Pattern)是一种结构设计模式,它允许将一个类的接口转换成客户端所期望的另一个接口。通过适配器模式,可以将一个类的接口转换成客户端所期望的另一个接口,使得原本不兼容的类能够一起工作。原创 2023-09-19 20:35:36 · 417 阅读 · 0 评论 -
设计模式:备忘录模式(C++实现)
首先,通过调用原发器的setState()方法设置初始状态,并调用createMemento()方法创建备忘录,然后将备忘录添加到备忘录管理对象中。最后,通过调用restoreMemento()方法将原发器对象恢复到第二个备忘录的状态,并通过getState()方法获取当前状态。Originator是原发器类,它有一个用于保存状态的成员变量,并提供了创建备忘录和恢复备忘录的方法。Caretaker是备忘录管理类,它维护了一个备忘录对象的列表,并提供了添加备忘录和获取备忘录的方法。原创 2023-09-19 17:13:21 · 353 阅读 · 0 评论 -
设计模式:命令模式(C++实现)
在上述示例中,Command是命令的基类,定义了一个纯虚函数execute(),用于执行命令。ConcreteCommand是具体的命令类,它包含了一个指向接收者对象的指针,并实现了execute()函数,将请求委托给接收者的action()函数进行处理。Invoker是调用者类,它维护一个命令对象的列表,并提供了addCommand()和executeCommands()函数。addCommand()用于向命令列表中添加命令对象,executeCommands()用于执行命令列表中的所有命令。原创 2023-09-19 16:30:17 · 569 阅读 · 0 评论 -
设计模式:观察者模式(C++实现)
通过attach()函数将观察者添加到主题的观察者列表中,然后通过notify()函数通知所有观察者进行更新。attach()用于将观察者添加到观察者列表中,detach()用于从观察者列表中移除观察者,notify()用于通知所有观察者进行更新操作。观察者模式(Observer Pattern)是一种设计模式,用于定义对象之间的一对多依赖关系,当一个对象(称为主题或可观察者)的状态发生变化时,它的所有依赖对象(称为观察者)都会收到通知并进行相应的更新。原创 2023-09-19 15:19:24 · 609 阅读 · 0 评论