当Rust邂逅GOF
文章平均质量分 54
goto rust
这个作者很懒,什么都没留下…
展开
-
用Rust实现23种设计模式之 享元模式
享元模式是一种结构型设计模式,它通过共享对象来减少内存使用和提高性能。在上述代码中,我们首先定义了享元接口Flyweight,并实现了具体享元ConcreteFlyweight。具体享元包含一个内部状态intrinsic_state,并实现了operation方法,其中打印了内部状态和外部状态。然后,我们定义了享元工厂FlyweightFactory,它维护了一个享元对象的集合。在get_flyweight方法中,如果已存在具有相同内部状态的享元对象,则返回该对象;原创 2023-08-06 10:31:53 · 141 阅读 · 0 评论 -
用Rust实现23种设计模式之 备忘录模式
备忘录模式是一种行为型设计模式,它允许在不暴露对象内部状态的情况下捕获和恢复对象的状态。在上述代码中,我们首先定义了备忘录对象Memento,它包含一个状态字段state。然后,我们定义了原发器对象Originator,它包含一个状态字段state,并提供了设置状态、创建备忘录和恢复状态的方法。接下来,我们定义了管理者对象Caretaker,它维护了一个备忘录对象的集合,并提供了添加备忘录和获取备忘录的方法。在main函数中,我们创建了原发器对象originator和管理者对象caretaker。原创 2023-08-06 10:31:25 · 109 阅读 · 0 评论 -
用Rust实现23种设计模式之 命令模式
命令模式是一种行为型设计模式,它将请求封装成一个对象,从而使得可以用不同的请求对客户端进行参数化。在上述代码中,我们首先定义了命令接口Command,并实现了具体命令ConcreteCommandA和ConcreteCommandB。这些具体命令包含一个请求接收者Receiver,并在execute方法中调用接收者的相应操作。然后,我们定义了请求接收者Receiver,它包含了实际的操作方法action_a和action_b。原创 2023-08-06 10:31:03 · 172 阅读 · 0 评论 -
用Rust实现23种设计模式之 外观模式
然后,我们定义了外观Facade,它包含子系统A和子系统B的实例。外观提供了一个统一的接口operation,其中调用了子系统A和子系统B的操作方法。通过外观模式,我们可以提供一个简化的接口来访问复杂的子系统,隐藏了子系统的复杂性,使得客户端代码更加简洁和易于使用。外观模式是一种结构型设计模式,它提供了一个统一的接口,用于访问子系统中的一组接口。在上述代码中,我们首先定义了子系统A和子系统B,它们分别实现了各自的操作方法。原创 2023-08-05 23:40:33 · 1407 阅读 · 0 评论 -
用Rust实现23种设计模式之 状态模式
状态模式是一种行为型设计模式,它允许对象在内部状态改变时改变其行为。在上述代码中,我们首先定义了状态接口State,并实现了具体状态ConcreteStateA和ConcreteStateB。每个具体状态都实现了handle方法,用于处理不同的状态。然后,我们定义了上下文对象Context,它包含一个状态对象state。在Context中,我们通过set_state方法可以动态地改变状态,通过request方法可以发起请求,具体的处理行为由当前状态对象来执行。原创 2023-08-05 23:39:37 · 144 阅读 · 0 评论 -
用Rust实现23种设计模式之 中介者模式
中介者模式是一种行为型设计模式,它通过引入一个中介者对象来协调多个对象之间的交互。中介者模式通过降低对象之间的直接耦合,提高了系统的可维护性和灵活性。在上述代码中,我们首先定义了中介者接口Mediator,并实现了具体中介者ConcreteMediator。具体中介者维护了一个同事对象的集合,并实现了notify方法,用于通知其他同事对象。然后,我们定义了同事接口Colleague,并实现了具体同事ConcreteColleagueA和ConcreteColleagueB。原创 2023-08-05 23:39:13 · 85 阅读 · 0 评论 -
用Rust实现23种设计模式之 访问者模式
访问者模式是一种行为型设计模式,它允许在不改变被访问对象的结构的情况下,定义对这些对象的新操作。在上述代码中,我们首先定义了被访问者接口Element,并实现了具体被访问者ConcreteElementA和ConcreteElementB。每个具体被访问者都实现了accept方法,用于接受访问者的访问。然后,我们定义了访问者接口Visitor,并实现了具体访问者ConcreteVisitor。具体访问者实现了visit_element_a和visit_element_b方法,用于访问不同的被访问者。原创 2023-08-05 23:38:46 · 77 阅读 · 0 评论 -
用Rust实现23种设计模式之 解释器模式
下面是一个简单的例子,演示如何使用 Rust 实现解释器模式。原创 2023-08-05 23:38:23 · 116 阅读 · 0 评论 -
用Rust实现23种设计模式之 模板方法模式
模板方法模式是一种行为型设计模式,它定义了一个算法的骨架,将一些步骤的实现延迟到子类中。在上述代码中,我们首先定义了模板方法的抽象类AbstractClass,并定义了一个template_method方法,该方法定义了算法的骨架,其中包含了一些具体的步骤,这些步骤由子类实现。然后,我们创建了两个具体实现模板方法的子类ConcreteClassA和ConcreteClassB。这两个子类分别实现了AbstractClass中的具体步骤方法step1、step2和step3。原创 2023-08-05 23:37:47 · 279 阅读 · 0 评论 -
用Rust实现23种设计模式之 观察者模式
观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,使得当一个对象的状态发生变化时,其所有依赖者都会收到通知并自动更新。在上述代码中,我们首先定义了观察者接口Observer,并实现了具体观察者ConcreteObserver。具体观察者包含一个名称字段,并实现了update方法,用于接收并处理被观察者发送的通知。然后,我们定义了被观察者接口Subject,并实现了具体被观察者ConcreteSubject。原创 2023-08-05 23:36:51 · 133 阅读 · 0 评论 -
用Rust实现23种设计模式之 迭代器模式
迭代器模式是一种行为型设计模式,它提供了一种顺序访问集合对象元素的方法,而无需暴露集合对象的内部表示。在上述代码中,我们首先定义了迭代器接口Iterator,并实现了具体迭代器ConcreteIterator。具体迭代器包含一个集合对象的引用和一个索引,实现了has_next方法用于判断是否还有下一个元素,以及next方法用于获取下一个元素。然后,我们定义了集合对象Collection,它包含一个字符串类型的items字段,并实现了create_iterator方法用于创建迭代器对象。原创 2023-08-05 23:36:24 · 78 阅读 · 0 评论 -
用Rust实现23种设计模式之 策略模式
下面是一个简单的例子,演示如何使用 Rust 实现策略模式。原创 2023-08-04 13:49:28 · 1863 阅读 · 0 评论 -
用Rust实现23种设计模式之 职责链模式
下面是一个简单的例子,演示如何使用 Rust 实现职责链模式。原创 2023-08-04 13:49:03 · 1368 阅读 · 0 评论 -
用Rust实现23种设计模式之 代理模式
代理模式是一种结构型设计模式,它允许通过代理对象来控制对真实对象的访问。在上述代码中,我们首先定义了共享接口Subject,并实现了具体对象RealSubject。RealSubject表示真实对象,实现了Subject接口的request方法。然后,我们定义了代理对象Proxy,它包含一个RealSubject对象作为其成员。Proxy实现了Subject接口的request方法,在方法中调用了RealSubject的request方法,并在调用前后执行了一些额外的操作。原创 2023-08-04 13:48:32 · 1824 阅读 · 0 评论 -
用Rust实现23种设计模式之 装饰者模式
通过装饰者模式,我们可以在运行时动态地向对象添加新的行为,同时又不改变其接口。装饰者模式是一种结构型设计模式,它允许动态地向对象添加新的行为,同时又不改变其接口。,并将组件对象传入。然后,我们调用装饰者对象的。这些具体装饰者包含一个组件对象,并在。具体组件表示被装饰的对象,实现了。方法,并在结果前后添加了额外的修饰。方法,并在结果前后添加了额外的修饰。函数中,我们创建了具体组件对象。方法,实际上调用了组件对象的。然后,我们定义了装饰者接口。方法中调用组件对象的。,并实现了具体装饰者。,以及具体装饰者对象。原创 2023-08-05 23:37:13 · 152 阅读 · 0 评论 -
用Rust实现23种设计模式之 组合模式
组合模式是一种结构型设计模式,它允许将对象组合成树状结构,并且能够以统一的方式处理单个对象和组合对象。通过组合模式,我们可以将对象组合成树状结构,以统一的方式处理单个对象和组合对象,提高代码的灵活性和可扩展性。叶子组件表示树中的叶子节点,容器组件表示树中的容器节点,可以包含其他组件。然后,我们将叶子组件添加到容器组件中,并调用容器组件的。方法,用于执行容器组件的操作。在上述代码中,我们首先定义了组件接口。方法,用于向容器中添加和删除组件。函数中,我们创建了两个叶子组件。方法,用于执行叶子组件的操作。原创 2023-08-03 23:48:02 · 1585 阅读 · 0 评论 -
用Rust实现23种设计模式之桥接模式
通过桥接模式,我们可以将抽象部分和实现部分分离,使它们可以独立变化。这样可以提高系统的灵活性、可扩展性和可复用性,并隐藏实现的细节。桥接模式的设计目标是将抽象部分和实现部分分离,使它们可以独立变化。,并将相应的实现类对象传入。最后,我们调用抽象类的。这个具体抽象类包含一个实现类对象,并在。在上述代码中,我们首先定义了实现类接口。函数中,我们创建了具体的实现类对象。然后,我们创建了具体的抽象类对象。方法,实际上调用了相应实现类的。,并实现了两个具体的实现类。这些具体实现类分别实现了。,并实现了具体的抽象类。原创 2023-08-03 23:44:25 · 1460 阅读 · 0 评论 -
用Rust实现23种设计模式之适配器
在 Rust 中,可以使用结构体和 trait 来实现适配器模式。适配器模式是一种结构型设计模式,它允许将一个类的接口转换为客户端所期望的另一个接口。下面是一个使用 Rust 实现适配器模式的示例,带有详细的注释和说明:在上述示例中,我们首先定义了目标接口 Target 和适配者接口 Adaptee 。然后,我们实现了适配者接口 Adaptee 的具体类型 ConcreteAdaptee ,并在其中实现了 specific_request 方法。接下来,我们定义了适配器 Adapter原创 2023-08-03 23:41:07 · 1226 阅读 · 0 评论 -
用Rust实现23种设计模式之原型模式
原型模式是一种创建型设计模式,它允许通过复制现有对象来创建新对象,而无需显式地使用构造函数。然后,通过调用 clone 方法来克隆原型对象,创建了两个新对象 clone1 和 clone2。在上述示例中,我们首先定义了一个原型对象的结构体 Prototype ,它具有一个数据字段 data。通过原型模式,我们可以通过克隆现有对象来创建新对象,而无需显式地使用构造函数。最后,我们输出了克隆对象的数据。由于克隆是通过复制原型对象的数据来创建新对象,因此克隆对象的数据与原型对象的数据相同。原创 2023-08-03 23:34:31 · 1436 阅读 · 0 评论 -
用Rust实现23种设计模式之建造者模式
下面是一个使用 Rust 实现建造者模式的示例,最后,我们通过调用 build 方法来构建产品,并输出构建的产品的各个部分。然后,我们定义了建造者结构体 Builder ,它具有与 Product 结构体相同的三个可选字段,表示正在构建的产品的各个部分。在 Builder 结构体中,我们实现了一系列方法,用于设置产品的各个部分,并使用方法链的方式来方便地设置多个部分。通过建造者模式,我们可以按照特定的顺序构建复杂对象,并且可以根据需求构建不同的变体,同时保持代码的可读性和可维护性。原创 2023-08-03 23:33:03 · 1676 阅读 · 0 评论 -
用Rust实现23种设计模式之抽象工厂
在上述示例中,我们首先定义了抽象产品族的 trait AbstractProductA 和 AbstractProductB ,分别定义了产品族中的操作方法。然后,我们实现了具体产品族1和具体产品族2,它们分别实现了 AbstractProductA 和 AbstractProductB trait。然后,我们实现了具体工厂1和具体工厂2,它们分别实现了 AbstractFactory trait,并实现了创建具体产品族的方法。原创 2023-08-03 23:27:40 · 1189 阅读 · 0 评论 -
用Rust实现23种设计模式之简单工厂
接下来,我们定义了一个 Factory trait,它定义了创建产品的方法。然后,我们实现了两个具体工厂 ConcreteFactoryA 和 ConcreteFactoryB ,它们分别实现了 Factory trait,并分别创建了 ConcreteProductA 和 ConcreteProductB。这样,通过工厂方法模式,我们可以在运行时动态选择具体工厂和产品,实现了创建对象的解耦和灵活性。在 main 函数中,我们使用具体工厂创建具体产品,并调用产品的操作方法。原创 2023-08-03 23:24:23 · 1197 阅读 · 0 评论 -
用Rust实现23种设计模式之单例
当Rust遇见设计模式,有多少种单例的实现方式呢?原创 2023-08-03 23:16:57 · 1875 阅读 · 2 评论