使用依赖于其他类本身的类

时间:2016-07-16 19:10:41

标签: c# class

如果有正确的方法,我想要: 我有一个对象,里面有一些重要的信息(公共变量)。 然后我有一个类,用这些重要信息来处理代码看起来像这样的东西:

public class MyViewHolder extends RecyclerView.ViewHolder{
    public ImageButton mCallButton, mMoreButton, mSmsButton, mEmailButton;
    public TextView mContactName;
    public MyViewHolder(View view) {
        super(view);
        mContactName = (TextView) view.findViewById(R.id.tv_contact_name);
        mCallButton = (ImageButton) view.findViewById(R.id.imgbtn_call);
        mMoreButton = (ImageButton) view.findViewById(R.id.imgbtn_more);
        mSmsButton = (ImageButton) view.findViewById(R.id.imgbtn_sms);
        mEmailButton = (ImageButton) view.findViewById(R.id.imgbtn_email);
        mContext = view.getContext();
    }
}

问题是,这个" DependantClasses"与许多或所有" ImportantVariables"一起工作,所以我认为不值得将它们全部作为参数传递(在实际代码中会有更多变量)。

这种情况发生是因为我不想让所有代码都使用" main"中的变量。 class,为了模块化和更新代码时的轻松。

我无法通过其他方式找到一种方法,但它并不适合我。

编辑:" DependantClasses"相互影响,这是我认为的主要问题。

1 个答案:

答案 0 :(得分:1)

我建议创建一个包含所有ImportantVariable的接口,让你的Object类实现它,然后让DependentClass es在它们的构造函数中接受该接口。 (我认为最好)将所有ImportantVariable抽象为VariableCollection课程(确保您可以在真实应用中找到更好的名字!)并制作DependentClass取代该课程。

方法一(接口)

public interface IImportantVariables
{
  object ImportantVariable { get; } // I prefer exposing this 
                                    // kind of thing as a readonly 
                                    // property but it's up to you
  object ImportantVariable2 { get; }
  object ImportantVariable3 { get; }
  object ImportantVariable4 { get; }
}

public class Object : IImportantVariables
{
  // Implementation as before
}

public class DependentClass1 
{
  public DependentClass1(IImportantVariables variables)
  {
    // ...
  }
}

方法2(抽象类)

public class ImportantVariables
{
  public object ImportantVariable;
  public object ImportantVariable2;
  public object ImportantVariable3;
  public object ImportantVariable4;
}

public class Object
{
  public class DependantClass1;
  public class DependantClass2;

  public ImportantVariables Variables;

  public Object()
  {
    Variables = new ImportantVariables();
    DependantClass1 = new DependantClass1(this.Variables);
    DependantClass2 = new DependantClass1(this.Variables);
  }
}