Option for implementing Robert Martin's net architecture
-
This architecture is required as simple as possible on the basis of Robert Martin ' s book:
According to this architecture, Business Rules and Business Rules Interface should know nothing about Interface Realization.
To date, the modules shown in the figure are as follows:
User Interface challenges the function in Bussiness Rules:public void onClick(View v) { BusinessRules businessRules = new BusinessRules(); switch (v.getId()) { case R.id.btnSelect: businessRules.business_rules(1, null,null); break; case R.id.btnInput: businessRules.business_rules(2,etName.getText().toString(), etUID.getText().toString()); break; } }
Bussiness Rules contain business logic (depending on the value of action, we either select() or input()):
public class BusinessRules {
public void business_rules(int action, String UserName, String UID) { switch (action) { case (1): select(); break; case (2): input(UserName, UID); break; } }
}
Business Rules Interface contains an interface defining select(s) and input(s):
public interface BusinessRulesInterface {
void select(); void input(String UserName, String UID);
}
Interface Realization contains a class that implements the interface function of Business Rules Interface:
public class InterfaceRealization extends AppCompatActivity implements BusinessRulesInterface {
@Override public void select() { Toast.makeText(this, "Нажата кнопка Select", Toast.LENGTH_LONG); } @Override public void input(String UserName, String UID) { Toast.makeText(this, "Input: " + UserName +" " + UID, Toast.LENGTH_LONG); }
}
Question: How do you put the business Rules on Business Rules Interface right?
P.S. The same subject I raised. https://ru.stackoverflow.com/questions/1346581/%D0%92%D1%8B%D0%B7%D0%BE%D0%B2%20%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%B0%20%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0 but perhaps there I was unclear about the task, so I decided to create a separate issue for more complete discussion.
-
public class BusinessRules { private BusinessRulesInterface businessRules; @Inject // - possibly public BusinessRules(BusinessRulesInterface businessRules) { this.businessRules = businessRules; }