Nir*_*rav 4 java oop interface
我有两个程序.
第一个没有'Buffer'接口,第二个是'Buffer'接口.
两个程序都给我相同的输出.
我的问题是.
为什么我需要创建"缓冲"接口,而我可以在没有接口的情况下获得相同的输出?
这是我的两个程序:
没有接口:
public class MainClass {
public static class producer {
maintainBuffer bf;
producer(maintainBuffer buffer) {
this.bf = buffer;
}
public void setData() {
for (int i = 0; i <= 10; i++) {
bf.set(i);
}
}
}
public static class reader {
maintainBuffer bf;
reader(maintainBuffer buffer) {
this.bf = buffer;
}
public void getData() {
System.out.println("From Reader Class:-" + bf.get());
}
public void extraData() {
System.out.println("Extra DATA");
}
}
public static class maintainBuffer {
int buffer = -1;
public int get() {
return buffer;
}
public void set(int a) {
buffer += a;
}
}
public static void main(String str[]) {
maintainBuffer b = new maintainBuffer();
producer p = new producer(b);
p.setData();
reader r = new reader(b);
r.getData();
r.extraData();
}
}
Run Code Online (Sandbox Code Playgroud)
有了接口
public class MainClass {
public static class producer {
Buffer bf;
producer(Buffer buffer) {
this.bf = buffer;
}
public void setData() {
for (int i = 0; i <= 10; i++) {
bf.set(i);
}
}
}
public static class reader {
Buffer bf;
reader(Buffer buffer) {
this.bf = buffer;
}
public void getData() {
System.out.println("From Reader Class:-" + bf.get());
}
public void extraData() {
System.out.println("Extra DATA");
}
}
public static interface Buffer{
public int get();
public void set(int a);
}
static class maintainBuffer implements Buffer{
int buffer=-1;
public int get() {
return buffer;
}
public void set(int a) {
buffer +=a;
}
}
public static void main(String str[]) {
Buffer b = new maintainBuffer();
producer p = new producer(b);
p.setData();
reader r = new reader(b);
r.getData();
r.extraData();
}
}
Run Code Online (Sandbox Code Playgroud)
使用界面,您可以在以后使用其他实现而无需更改所有代码.例如,如果使用List接口,则可以是LinkedList,ArrayList,CopyOnWriteArrayList或其他东西.
你说得很清楚,实施的细节并不重要.
另一方面,我不会为每个班级制作一个界面.在大多数情况下,在不太可能的情况下,在您真正需要的时候添加界面并不总是很困难.
当你想要松散耦合时,我会使用一个接口,例如当调用者是另一个模块或由另一个开发人员使用时.如果你有一个像本地实现的紧耦合,我可能不会打扰一个接口.
在上面的示例中,您可能希望添加单元测试以查看设置了哪些值,或者开发人员可能希望使用缓冲区来记录设置的值.使用界面可以使这更容易.
| 归档时间: |
|
| 查看次数: |
783 次 |
| 最近记录: |