An einem Standort hatte ich eine Person mit langjähriger Java-Erfahrung, die mir bei einem C # -Projekt half. Ein Teil des Codes verwendete eine flüssige Schnittstelle, aber ich war nicht ganz überzeugt. Ich habe versucht, einen Beispielcode zu erstellen, indem ich mich auf den damaligen Code bezog.
Technische Daten) Aktualisieren Sie die Datenbank, indem Sie die Bildschirmwerte mit den aus der Datenbank erhaltenen Ergebnissen zusammenführen.
/**Hauptverarbeitung**/
private Dao _dao = new Dao();
public void Main()
{
//Rufen Sie die aktuellen Informationen aus der Datenbank ab.
var param = new UpdateParameter(_dao)
.SetHeader(1)
.SetHeader2("a")
.SetHeader3(2);
//Reflektieren Sie die Informationen auf dem Bildschirm.
SetValueFromView(param);
//Aktualisieren Sie die Datenbank.
_dao.Update(param);
}
private void SetValueFromView(UpdateParameter param)
{
//Header1 des Parameters, der den Wert des Bildschirms erhalten hat,2,Reflektiere in 3.
//Code weggelassen
}
/**Parameterklasse, die das DTO der DB-Aktualisierungstabelle zusammenfasst**/
public class UpdateParameter
{
public Header Header { get; private set; }
public Header2 Header2 { get; private set; }
public Header3 Header3 { get; private set; }
private readonly Dao _dao = null;
public UpdateParameter(Dao dao)
{
_dao = dao;
}
public UpdateParameter SetHeader(int id)
{
Header = _dao.GetHeader(id);
return this;
}
public UpdateParameter SetHeader2(string code)
{
Header2 = _dao.GetHeader2(code);
return this;
}
public UpdateParameter SetHeader3(int id)
{
Header3 = _dao.GetHeader3(id);
return this;
}
}
/** Header1,2,3 DTO**/
public class Header
{
public int Id { get; set; }
}
public class Header2
{
public string Code { get; set; }
}
public class Header3
{
public int Id { get; set; }
}
/**Dao zur Datenerfassung und -aktualisierung**/
public class Dao
{
public Header GetHeader(int id)
{
//Header abrufen
return new Header() { Id = id };
}
public Header2 GetHeader2(string code)
{
//Holen Sie sich Header 2
return new Header2() { Code = code };
}
public Header3 GetHeader3(int id)
{
//Holen Sie sich Header 3
return new Header3() { Id = id };
}
public void Update(UpdateParameter param)
{
//Führen Sie die DB-Aktualisierungsverarbeitung aus. Code weggelassen
}
}
private Dao dao = new Dao();
public void main() {
//Rufen Sie die aktuellen Informationen aus der Datenbank ab.
UpdateParameter param = new UpdateParameter(dao)
.setHeader(1)
.setHeader2("a")
.setHeader3(2);
//Reflektieren Sie die Informationen auf dem Bildschirm.
setValueFromView(param);
//Aktualisieren Sie die Datenbank.
dao.update(param);
}
private void setValueFromView(UpdateParameter param) {
//Header1 des Parameters, der den Wert des Bildschirms erhalten hat,2,Reflektiere in 3.
//Code weggelassen
}
public class UpdateParameter {
private Header header = null;
private Header2 header2 = null;
private Header3 header3 = null;
private final Dao dao;
public UpdateParameter(Dao dao) {
this.dao = dao;
}
public UpdateParameter setHeader(int id) {
this.header = dao.getHeader(id);
return this;
}
public UpdateParameter setHeader2(String code) {
this.header2 = dao.getHeader2(code);
return this;
}
public UpdateParameter setHeader3(int id) {
this.header3 = dao.getHeader3(id);
return this;
}
public Header getHeader() {
return header;
}
public Header2 getHeader2() {
return header2;
}
public Header3 getHeader3() {
return header3;
}
}
/** Header1,2,3 DTO**/
public class Header {
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
public class Header2 {
private String Code;
public String getCode() {
return Code;
}
public void setCode(String code) {
Code = code;
}
}
public class Header3 {
private int Id;
public int getId() {
return Id;
}
public void setId(int id) {
Id = id;
}
}
/**Dao zur Datenerfassung und -aktualisierung**/
public class Dao {
public Header getHeader(int id) {
//Header abrufen
Header header = new Header();
header.setId(id);
return header;
}
public Header2 getHeader2(String code) {
//Holen Sie sich Header 2
Header2 header2 = new Header2();
header2.setCode(code);
return header2;
}
public Header3 getHeader3(int id) {
//Holen Sie sich Header 3
Header3 header3 = new Header3();
header3.setId(id);
return header3;
}
public void update(UpdateParameter param) {
//Führen Sie die DB-Aktualisierungsverarbeitung aus. Code weggelassen
}
}
Es scheint, dass die Schnittstelle so ist, dass UpdateParameter fließt, aber dieser Code hat die folgenden Probleme.
Sie können den Vorteil einer fließenden Schnittstelle in einer Klasse wie StringBuilder sehen. Andererseits fühlt es sich seltsam an, es in einer Klasse zu verwenden, die nur einfache Informationen wie UpdateParameter enthält.
/**Hauptverarbeitung**/
private Dao _dao = new Dao();
public void Main()
{
//Rufen Sie die aktuellen Informationen aus der Datenbank ab.
var param = new UpdateParameter();
//Abrufen von Daten aus der Datenbank im Hauptprozess.
param.Header = _dao.GetHeader(1);
param.Header2 = _dao.GetHeader2("a");
param.Header3 = _dao.GetHeader3(2);
//Reflektieren Sie die Informationen auf dem Bildschirm.
SetValueFromView(param);
//Aktualisieren Sie die Datenbank.
_dao.Update(param);
}
private void SetValueFromView(UpdateParameter param)
{
//Header1 des Parameters, der den Wert des Bildschirms erhalten hat,2,Reflektiere in 3.
//Code weggelassen
}
/**Parameterklasse, die das DTO der DB-Aktualisierungstabelle zusammenfasst**/
public class UpdateParameter
{
public Header Header { get; set; }
public Header2 Header2 { get; set; }
public Header3 Header3 { get; set; }
//Dao-Referenz entfernen
}
/** Header1,2,3 DTO**/
public class Header
{
public int Id { get; set; }
}
public class Header2
{
public string Code { get; set; }
}
public class Header3
{
public int Id { get; set; }
}
/**Dao zur Datenerfassung und -aktualisierung**/
public class Dao
{
public Header GetHeader(int id)
{
//Header abrufen
return new Header() { Id = id };
}
public Header2 GetHeader2(string code)
{
//Holen Sie sich Header 2
return new Header2() { Code = code };
}
public Header3 GetHeader3(int id)
{
//Holen Sie sich Header 3
return new Header3() { Id = id };
}
public void Update(UpdateParameter param)
{
//Führen Sie die DB-Aktualisierungsverarbeitung aus. Code weggelassen
}
}
private Dao dao = new Dao();
public void main() {
//Rufen Sie die aktuellen Informationen aus der Datenbank ab.
UpdateParameter param = new UpdateParameter();
//Abrufen von Daten aus der Datenbank im Hauptprozess.
param.setHeader(dao.getHeader(1));
param.setHeader2(dao.getHeader2("a"));
param.setHeader3(dao.getHeader3(2));
//Reflektieren Sie die Informationen auf dem Bildschirm.
setValueFromView(param);
//Aktualisieren Sie die Datenbank.
dao.update(param);
}
private void setValueFromView(UpdateParameter param) {
//Header1 des Parameters, der den Wert des Bildschirms erhalten hat,2,Reflektiere in 3.
//Code weggelassen
}
public class UpdateParameter {
private Header header = null;
private Header2 header2 = null;
private Header3 header3 = null;
//Dao-Referenz entfernen
public void setHeader(Header header) {
this.header = header;
}
public void setHeader2(Header2 header2) {
this.header2 = header2;
}
public void setHeader3(Header3 header3) {
this.header3 = header3;
}
public Header getHeader() {
return header;
}
public Header2 getHeader2() {
return header2;
}
public Header3 getHeader3() {
return header3;
}
}
//Der folgende Code wird weggelassen
Ich habe gerade die Dao-Referenz von UpdateParameter gelöscht und die Datenbank auf der Hauptverarbeitungsseite erhalten, aber dieser Code ist überzeugend.
Ich habe ungefähr ein Jahr Erfahrung in der Java-Entwicklung, daher frage ich mich, ob der im Beispiel gezeigte Code für Java normal ist. Was ist auch der Grund für die Verwendung einer Fluidschnittstelle, selbst wenn die unter "Was mich interessiert hat" beschriebenen Probleme unverändert bleiben.
[Vorheriger Artikel (Code-Sammlung, die ein wenig besorgniserregend ist)] (http://qiita.com/csharpisthebest/items/7d9d2c7e4da4b89488fd)
[Nächster Artikel (redundante Zuweisungsanweisung)] (http://qiita.com/csharpisthebest/items/f9ebc741e40037553d5b)
Recommended Posts