只想再问我自己的问题。可以google主题,很多人指出结果构造函数的参数列表的大小是不好的做法。另一个要点是,将这样的类保留在activity / fragment中是更好的做法。
以下是长参数列表的示例。
public class ClusterClass {
private Context context;
private SlidingUpPanelLayout slidingUpPanelLayout;
private GoogleMap map;
private View rootView;
private ClusterManager<MyItem> mClusterManager;
private com.support.android.fetchpark.DefaultClusterRenderer mClusterRenderer;
private ShapeDrawable mColoredCircleBackground;
private float mDensity;
public ClusterClass(Context context,View rootView, GoogleMap map, SlidingUpPanelLayout slidingUpPanelLayout){
this.context = context;
this.slidingUpPanelLayout = slidingUpPanelLayout;
this.map = map;
this.rootView = rootView;
}
这是一个允许我从片段中删除TON代码的类。它也很棒,因为它可能不止一次使用它的UI元素。
public class MyFloatingActionMenu {
View rootView;
Context context;
private FloatingActionButton fab1,fab2,fab3;
public MyFloatingActionMenu(Context context, View rootView) {
this.rootView = rootView;
this.context = context;
}
public void setUpFam(){
//get reference to activity layout inflater
LayoutInflater inflater = LayoutInflater.from(context);
//Instantiate the FAM
FrameLayout container = (FrameLayout) rootView.findViewById(R.id.map_fragment_frame );
View child = inflater.inflate(R.layout.floatingactionmenu, null);
container.addView(child);
//Configure FAM
FloatingActionMenu menuLabelsRight = (FloatingActionMenu) rootView.findViewById(R.id.menu_labels_right);
menuLabelsRight.hideMenuButton(false);
menuLabelsRight.setClosedOnTouchOutside(true);
menuLabelsRight.setIconAnimated(true);
menuLabelsRight.showMenuButton(true);
menuLabelsRight.setEnabled(true);
//Store each FAB of the FAM
fab1 = (FloatingActionButton) rootView.findViewById(R.id.map_fab1);
fab2 = (FloatingActionButton) rootView.findViewById(R.id.map_fab2);
fab3 = (FloatingActionButton) rootView.findViewById(R.id.map_fab3);
//set listener for each FAB of the FAM
fab1.setOnClickListener(fabClickListener);
fab2.setOnClickListener(fabClickListener);
fab3.setOnClickListener(fabClickListener);
}
private View.OnClickListener fabClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
String text = "";
switch (v.getId()) {
case R.id.map_fab1:
//do something
break;
case R.id.map_fab2:
text = fab2.getLabelText();
//fab2.setVisibility(View.GONE);
break;
case R.id.map_fab3:
text = fab3.getLabelText();
// fab2.setVisibility(View.VISIBLE);
break;
}
Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
}
};
}
请让我知道你的想法。虽然我在整个程序中只需要一个这样的实例,但我有一个FloatingActionMenu,我也做了同样的事情。能够在我的两个活动中实例化它似乎是一个很好的OOP练习。我不喜欢的是,我现在拥有近2倍的项目文件,我猜构造函数很长。
答案 0 :(得分:0)
大班是不好的做法,它始终建议你将其他班级的功能分开。让片段只做简单的函数,比如映射XML并添加监听器。
我认为在将所有代码与片段分开时,您确实正确,因为它可以帮助您更好地组织和维护代码。 :)
请记住
课程应该很小
课程的第一条规则是它们应该很小。第二 类的规则是它们应该小于那个。不,我们是 不要重复函数章节中完全相同的文本。 但与功能一样,较小的是主要规则 设计课程。与功能一样,我们的直接问题始终如一 “有多小?”
班级名称应描述其履行的职责。 事实上,命名可能是帮助确定课程的第一种方式 尺寸。如果我们不能为类派生一个简洁的名称,那么它很可能 太大了。班级名称越模糊,就越有可能 责任太多了。例如,类名包括weasel 像处理器或经理或超级这样的词经常暗示不幸 责任的集合。