15、【享元模式】通过共享对象来避免重复创建相同的对象

15、【享元模式】通过共享对象来避免重复创建相同的对象

首页游戏大全共享棋牌最新版更新时间:2024-06-12

你好,我是程序员雪球。

今天我们来聊聊 23 种设计模式中,一种常见的结构型模式,享元模式。聊聊它的设计思想、实现原理,应用场景,以及如何使用。

一、设计思想

享元模式(Flyweight Pattern)是一种结构型设计模式,它通过共享对象来避免重复创建相同的对象,从而提高系统的性能和内存利用率。享元模式的核心思想是将对象的状态和行为分离,将状态作为外部参数传递给对象,从而实现对象的共享。

二、实现原理

享元模式的实现原理是通过创建一个享元工厂类和享元类来实现的。享元工厂类负责维护享元对象的共享池,并根据需要创建或返回享元对象。享元类定义了享元对象的行为和状态,并提供了一个共享方法来共享享元对象。

三、常见业务场景

享元模式适用于需要大量创建相同对象的场景,例如图形界面中的按钮、文本框等。通过使用享元模式,可以避免重复创建相同的对象,从而提高系统的性能和内存利用率。

四、示例代码

下面是一个使用 java 实现的享元模式的示例代码:

java 复制

public class FlyweightPatternExample {

public static void main(String[] args) {

// 创建享元工厂类

FlyweightFactory factory = new FlyweightFactory();

// 创建享元对象

Flyweight flyweight1 = factory.getFlyweight("red");

Flyweight flyweight2 = factory.getFlyweight("blue");

Flyweight flyweight3 = factory.getFlyweight("green");

// 调用享元对象的操作方法

flyweight1.operation();

flyweight2.operation();

flyweight3.operation();

}

}

// 享元工厂类

class FlyweightFactory {

private HashMap<String, Flyweight> flyweights = new HashMap<>();

public Flyweight getFlyweight(String color) {

if (!flyweights.containsKey(color)) {

flyweights.put(color, new ConcreteFlyweight(color));

}

return flyweights.get(color);

}

}

// 享元类

abstract class Flyweight {

protected String color;

public Flyweight(String color) {

this.color = color;

}

public abstract void operation();

}

// 具体享元类

class ConcreteFlyweight extends Flyweight {

public ConcreteFlyweight(String color) {

super(color);

}

@Override

public void operation() {

System.out.println("Color: " color);

}

}

在上述示例中,我们创建了一个享元工厂类 FlyweightFactory 和一个享元类 Flyweight ,以及一个具体的享元类 ConcreteFlyweight 。在 FlyweightFactory 类中,我们维护了一个享元对象的共享池,并通过 getFlyweight 方法来获取享元对象。在 Flyweight 类中,我们定义了享元对象的行为和状态,并提供了一个共享方法来共享享元对象。在 ConcreteFlyweight 类中,我们实现了享元对象的具体行为和状态。

在 main 方法中,我们创建了三个享元对象 flyweight1 、 flyweight2 和 flyweight3 ,并调用了它们的 operation 方法。由于享元对象是共享的,因此我们只创建了三个享元对象,而不是六个。

享元模式的优点是可以避免重复创建相同的对象,从而提高系统的性能和内存利用率。它的缺点是可能会导致代码的可读性和可维护性降低,并且需要对享元对象的状态进行管理。

总结

一、设计思想

通过共享对象来避免重复创建相同的对象,从而提高系统的性能和内存利用率。

二、实现原理

享元模式的实现原理是通过创建一个享元工厂类和享元类来实现的。

三、常见业务场景

享元模式适用于需要大量创建相同对象的场景,比如:

1、word文本编辑器;

2、棋牌游戏;

讨论环节

为了方便你理解和巩固今天的内容,我给你留下两个讨论题,请在评论区与我一起讨论吧。

1. 享元模式的核心设计思想是什么?

2. 请说说你用过享元模式的场景?

如果觉得有收获,请双击支持,关注,后期我会持续更新更多相关知识。

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved