设计模式:单一职责原则
发布时间:2020-12-14 05:14:27 所属栏目:百科 来源:网络整理
导读:设计模式:单一职责原则 中文名:单一职责原则 英文名:Single Responsibility Principle (SRP) 含义:对于一个类,应该仅有一个引起它变化的原因。通俗讲:如果有两个完全不一样的功能,就不应该把他们放在一个类中,一个类应该是一组相关性很高的函数,
设计模式:单一职责原则
中文名:单一职责原则
英文名:Single Responsibility Principle (SRP)
含义:对于一个类,应该仅有一个引起它变化的原因。通俗讲:如果有两个完全不一样的功能,就不应该把他们放在一个类中,一个类应该是一组相关性很高的函数,数据的封装。
示例:
package com.csdnnew.csdnlogin; import com.csdnnew.csdnnew.MainActivity; import com.csdnnew.csdnnew.R; import cn.bmob.v3.Bmob; import cn.bmob.v3.BmobUser; import cn.bmob.v3.listener.SaveListener; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.Window; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class LoginActivity extends Activity implements OnClickListener{ private Button buttonLogin; private Button buttonRegister; private EditText textUserName; private EditText textPassword; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.login); buttonLogin = (Button)findViewById(R.id.bnLogin); buttonRegister = (Button)findViewById(R.id.bnRegister); buttonLogin.setOnClickListener(this); buttonRegister.setOnClickListener(this); textUserName = (EditText) findViewById(R.id.userNameText); textPassword = (EditText) findViewById(R.id.passwdText); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.bnLogin: final BmobUser user=new BmobUser(); String userName=textUserName.getText().toString(); String password=textPassword.getText().toString(); //与数据库中的信息进行比对,成功返回成功,失败返回失败的信息 user.setUsername(userName); user.setPassword(password); /* *用户登录 */ user.login(LoginActivity.this,new SaveListener() { @Override public void onSuccess() { Toast.makeText(LoginActivity.this,"登录成功",Toast.LENGTH_SHORT).show(); Intent intent = new Intent(); intent.setClass(LoginActivity.this,MainActivity.class); startActivity(intent); } @Override public void onFailure(int i,String s) { Toast.makeText(LoginActivity.this,"登录失败",Toast.LENGTH_SHORT).show(); } }); break; case R.id.bnRegister: showRegist(); break; default: break; } } private void showRegist() { //用户注册的方法 String userName=textUserName.getText().toString(); String password=textPassword.getText().toString(); final BmobUser user=new BmobUser(); user.setUsername(userName); user.setPassword(password); /* *用户注册的提交 */ user.signUp(LoginActivity.this,new SaveListener() { @Override public void onSuccess() { Toast.makeText(LoginActivity.this,"注册成功",Toast.LENGTH_SHORT).show(); } @Override public void onFailure(int i,String s) { Toast.makeText(LoginActivity.this,"注册失败"+s,Toast.LENGTH_SHORT).show(); } }); } }
把activity ,注册,登录进行分离,注册和登录单独定义一个类,这样注册类就实现注册方法,登录类只实现登录的功能。
UML类图:
注意:
在使用时我们要注意职责的扩散,比如我们的登录类在登录操作前要进行用户密码长度的检测,对于密码检测这个功能我们是否要定义一个新的类来实现它呢?
这时就要结合具体的情况了。不过我们有这样一个原则:只有逻辑足够简单,才可以在代码级别上违背单一职责原则,只有类中的方法足够少,才可以在方法级别上违反单一职责原则。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |