求版主叫我搭建程序框架
比如说一个项目需要几个java
A,B,C,D
A是主程序
B是一个都需要用的类
所以我现在是在A里创建B的实例,且创建C,D的实例,同时在创建C,D的实例是把B的实例传进C,D的构造函数里面。然后A,C,D就都可以共有B里面的方法,属性
新手用c语言的逻辑这么做的,好像程序是可以实现功能,但是不知道大家是怎么做的,总感觉这么做不好
版主指导下
[解决办法]
在Java程序里,好的设计讲究“高内聚、低耦合”。高内聚暂不说,低耦合就是要让类与类之间的相互依赖最少。比如你这个例子里,假如A创建B的目的仅仅是为了在创建C和D的时候使用,那么为什么不让C和D自己去创建B呢?这样A不再依赖B,使得整体耦合度降低。
如果A现在是创建C和D,今后换一个环境则是创建E和F,则将C和D中抽取出接口,让A去引用接口,让C和D去实现接口,这叫“依赖反转原则”。
[解决办法]
分几种情况:
1.B方法仅仅是一个方法而未读取B中任何属性和状态,这时可以将B中的方法设计成静态方法,如:
public class DateUtil {
public static Date getNow(){...}
}
public class A {
DateUtil.getNow();
...
C c = new C();
D d = new D();
}
public class C {
DateUtil.getNow();
}
public class D {
DateUtil.getNow();
}
public class DateValue {
private Date date;
//get与set方法
public int getMonth(){...}
}
public class A {
//从某处获得DateValue,或者自己创建
int month = dateValue.getMonth();
C c = new C(dateValue);
D d = new D(dateValue);
}
public class DateUtil {
public static int getMonth(Date date){...}
}
public class A {
C c = new C();
D d = new D();
c.方法(date);
d.方法(date);
}
public class C {
public 方法(date){ DateUtil.getMonth(date);
}
public class D {
public 方法(date){ DateUtil.getMonth(date);
}