iohao / ioGame

无锁异步化、事件驱动架构设计的 java netty 网络编程框架; 轻量级,无需依赖任何第三方中间件或数据库就能支持集群、分布式; 适用于网络游戏服务器、物联网、内部系统及各种需要长连接的场景; 通过 ioGame 你可以很容易的搭建出一个集群无中心节点、集群自动化、分布式的网络服务器;FXGL、Unity、UE、Cocos Creator、Godot、Netty、Protobuf、webSocket、tcp、socket;java Netty 游戏服务器框架;
http://game.iohao.com
GNU Affero General Public License v3.0
875 stars 190 forks source link

新增 - 属性值变更监听特性 #264

Closed iohao closed 4 months ago

iohao commented 5 months ago

新增功能的使用场景

属性可添加监听器,当某些属性值的发生变化时,触发监听器。

BooleanProperty

当 BooleanProperty 对象的值发生改变时,触发监听器。


var property = new BooleanProperty();
// add listener monitor property object
property.addListener((observable, oldValue, newValue) -> {
log.info("oldValue:{}, newValue:{}", oldValue, newValue);
});

property.get(); // value is false property.set(true); // 值变更时,将会触发监听器 property.get(); // value is true


**IntegerProperty**

> 当 IntegerProperty 对象的值发生改变时,触发监听器。

```java
var property = new IntegerProperty();
// add listener monitor property object
property.addListener((observable, oldValue, newValue) -> {
   log.info("oldValue:{}, newValue:{}", oldValue, newValue);
});

property.get(); // value is 0
property.set(22); // When the value changes,listeners are triggered
property.get(); // value is 22

property.increment(); // value is 23. will trigger listeners

ObjectProperty

当 ObjectProperty 对象内值的引用发生改变时,触发监听器。

YourUser user = new YourUser();

var property = new ObjectProperty(user);
// add listener monitor property object
property.addListener((observable, oldValue, newValue) -> {
   log.info("oldValue:{}, newValue:{}", oldValue, newValue);
});

property.set(user); // does not trigger listeners

YourUser user2 = new YourUser();
property.set(user2); // When the value changes,listeners are triggered
property.get(); // value is user2

class YourUser {}

将会提供

iohao commented 4 months ago

https://github.com/iohao/ioGame/releases/tag/21.6