在mvc模式中,模型部分应该是私有的吗? Flutter

6tdlim6h  于 2023-06-24  发布在  Flutter
关注(0)|答案(2)|浏览(136)

模型的变量应该是私有的,以某种方式给予更大的安全性,还是不应该是私有的?
我非常感谢你的帮助
代码
-- Flutter --

List FavoritosUsuarioFromJson(String str) => List<InfoModel>.from(json.decode(str).map((x) => InfoModel.fromJson(x)));

class InfoModel{
  String name;
   String email;

  InfoModel({required this.name,required this.email});

  factory InfoModel.fromJson(Map<String, dynamic> parsedJson){
    return InfoModel(

        name: parsedJson['usu_name'],
         email: parsedJson['usu_email'],
    );
  }

}
mwg9r5ms

mwg9r5ms1#

一般来说,为了封装和保护类的内部状态,将变量设为私有是一个好的做法。通过将变量设为私有,可以限制从类外部直接访问,这有助于防止意外的修改并确保正确的数据处理。
在代码示例中,InfoModel类中的变量name和email未标记为private,因此可以从类外部访问它们。如果您想将它们设为私有,可以在它们的名称前添加下划线(_):

class InfoModel {
      String _name;
      String _email;
    
      InfoModel({required String name, required String email})
          : _name = name,
            _email = email;
    
      // Rest of the class implementation...
    }

通过使变量私有化,代码的其他部分将需要使用getter和setter方法来访问或修改这些变量。这提供了对如何访问和操作变量的更好的控制。
但是,需要注意的是,单独使变量私有并不能保证绝对的安全性。这只是维护代码完整性的一个方面。根据应用程序的上下文和要求,您可能需要考虑其他安全措施,如输入验证、加密、访问控制等,以确保系统的整体安全性。

sqserrrh

sqserrrh2#

我不认为将模型私有化是强制性的,因为它将MVC中的业务逻辑保持在远离表示层的位置,并且检索数据的方法应该可以从控制器访问。
无论如何,你都应该让模型内部使用的方法或变量成为私有的。

相关问题