【问题标题】:What's the best solution to implement this?实现这一点的最佳解决方案是什么?
【发布时间】:2011-05-22 08:39:50
【问题描述】:

我正在处理的项目只有一个有朋友的个人资料

我已经这样做了

  • 静态类配置文件

  • 同学

  • 个人资料有静态好友集合

但个人资料和朋友的变量与姓名、图片、..等相同

所以我决定让一个人抽象类并继承它

然后我发现我不能从 person 继承静态类 [profile] 因为变量没有属性

所以我亲自将变量设为静态

那么每个朋友都没有它的变量,因为静态变量将属于朋友类

我是新手,我知道这是一个愚蠢的问题!

但是最好的实现方式是什么

我更喜欢使用静态配置文件来实现可访问性

出于可访问性目的,我更喜欢使用静态事物

【问题讨论】:

  • 想必您知道静态变量意味着每个人都共享相同的值吗?也许您根本不应该使用静态,而是从一个人类派生所有内容。
  • 是的,朋友们不共享相同的值,但只有一个配置文件,我想从任何其他类访问配置文件,所以我更喜欢将其实现为静态

标签: c# .net


【解决方案1】:

避免使用静态类。如果您想要一个实例,只需创建一个实例。静态类使测试变得困难。

但是回到设计,也许可以尝试引入一个 User 类:

class User
 - name
 - picture
 - other properties

class Profile
 - User myAccountInfo
 - List<User> friends

【讨论】:

  • 朋友的变量可能不在用户中!!
  • 我想从任何其他类访问配置文件,所以我更喜欢将其实现为静态
  • @Ahmed Adel 听起来您正在尝试进行过程编程而不是 OOP ......不要这样做。而是将其设为成员变量,并让其他对象通过 Profile 类的实例访问它。
  • @Yaur 我从来没有感觉到程序编程和 OOP 之间的区别 =(
  • 所以我做了你的,但是做了一些改变,我做了类用户,并用静态变量用户制作了一个静态类配置文件,但是现在问题是我像这样从 xaml 访问 profile.name { Binding Source={x:Static local:Profile.Name}} 现在我将如何访问 Profile.Data.Name ????
【解决方案2】:

可能是这样的?:

class User
{
    public User(string name, object picture)
    {
        Name = name;
        Picture = picture;
    }

    public string Name { get; set; }
    public object Picture { get; set; } //Change object to a class that holds Picture information.
}

class Profile : User
{
    private static Profile _profile;

    public List<User> Friends = new List<User>(); //This List<T> can contain instances of (classes that derive from) User.

    public Profile(string name, object picture) : base(name, picture) { }
    public static Profile GetProfile()
    {
        return _profile ?? (_profile = new Profile("NameOfProfileHere", null));
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    相关资源
    最近更新 更多