繁体   English   中英

更好的Java建模设计

[英]better modeling design java

我必须提供另一类具有法规管理的课程。

我想这两类:

A类:

public class A {
    private String attributeA1;
    ...
    private String attributeA50; 
    ...
    // getters and setters 
} 

B级:

public class B {
    private String attributeB1;
    ...
    private String attributeB50; 
    ...
    // getters and setters 
} 

A类的每个属性都将提供B类的属性。

例:

public Class Supplying {
    public B elementB;
    public A elementA;

    public void supplyAttributeB1( String toto){
        String tata =  elementA.getattributeA1(); 
        // Example of regulatory management "Substring"
        elementB.setAttributeB1(tata.substring(5));
    }

    public void supplyAttributeB2(String toto){
        ...
    }

    ...
    public void supplyAttributeB50(String toto){
        ...
    }
}

当我看到我的代码时,它不是很漂亮,我认为我有一个建模问题,因为提供的类将包含150行以上的代码。

有没有其他方法可以通过使用接口或继承或设计模式来实现这一概念? 我正在尝试学习如何更好地编码。

如果您的操作分为几大类,则可以使用“策略”模式:

public interface DataConverter<F,T> {
    public T convert( F from );
}

public class SubstringConverter implements DataConverter<String,String> {

    private final int start;

    public SubstringConverter( int start ) { this.start = start; }

    public String convert( String from ) {
        return from.substring( start );
    }

}

在您的补给课上

public class Supplying {
     private static final DataConverter<String,String> b1Converter = new SubstringConverter( 5 );
     // and so on ...


     public void supplyAttributeB1() {
         elementB.setAttributeB1( b1Converter.convert( elementA.getAttributeA1() ) );
     }

}

这将使更改逻辑变得容易(只要字段Ax始终转换为字段Bx,您所需要的就是插入新的转换器),并且易于查看发生了什么。

这是在不构建完整的数据转换框架的情况下所能达到的最大效果,在该框架中,您可能会使用反射来访问字段并拥有外部配置文件来驱动实体之间的映射。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM