如果有正确的方法,我想要: 我有一个对象,里面有一些重要的信息(公共变量)。 然后我有一个类,用这些重要信息来处理代码看起来像这样的东西:
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"相互影响,这是我认为的主要问题。
答案 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)
{
// ...
}
}
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);
}
}