小编JCv*_*mme的帖子

实现通用java接口添加了额外的方法

我有一个Id<T>带有单个方法的通用java接口T getId()和一个MyClass实现的类Id<Long>.当我检查MyClass使用java反射声明的方法时,我看到两个方法:一个具有返回类型Long,另一个具有返回类型Object.第二种方法来自何处,如何将其删除?

这是来源:

package mypackage;

import java.lang.reflect.Method;

public class MainClass {
    public static void main(String[] args) {
        for (Method method : MyClass.class.getDeclaredMethods()) {
            System.out.println(method);
        }
        // prints out two lines
        // public java.lang.Long mypackage.MyClass.getId()   <-- ok
        // public java.lang.Object mypackage.MyClass.getId() <-- not ok
    }
}

interface Id<T> {
    T getId();
}

class MyClass implements Id<Long> {
    @Override
    public Long getId() {
        return new Long(0);
    };
}
Run Code Online (Sandbox Code Playgroud)

java generics inheritance

5
推荐指数
1
解决办法
216
查看次数

用事件实现观察者模式

我正在开发一个Silverlight应用程序,我过度使用了观察者模式.在我的实现中,我创建了两个接口IObservable<T>IObserver<T>.前者包含将观察者附加到观察者的方法.后者有一个方法Notify(IObservable<T> observable, ...),observer.Notify(this, ...)当observable改变了状态时,observable 将自身作为参数传递.

现在我偶然发现了"事件",对我来说,似乎这就是观察者模式的一个实现,只是代表而不是前面提到的Notify方法.是对的吗?

我不太了解代表,并且不想花费数小时来重写我的代码只是为了最终得到与它已经做同样事情的代码.另一方面,事件可能优于基于接口的观察者模式.我错过了什么吗?

c# events observer-pattern

4
推荐指数
1
解决办法
2153
查看次数

OO设计模式:如何动态添加方法?

我在C#(或Java,无关紧要)中实现了一个简单的树结构,其中所有内容都围绕着抽象类Node及其子类.Node提供与数学图论相关的方法和属性.例如,Node.Parent引用父节点和Node.Children子节点

class Node {  
    Node Parent;  
    Node[] Children;

    void appendNode(Node node) { ... }
}  
Run Code Online (Sandbox Code Playgroud)

我正在使用树来执行计算.计算涉及大量递归,我还需要为每个节点存储中间值.对于每个计算,我已经向Node类引入了其他属性和方法,例如

class Node {  
    Node Parent;  
    Node[] Children; 

    // Calculate weight
    int weight; // current weight
    void recalculateWeight() {
        // perform some heavily recursive stuff
        // involving Parent.recalculateWeight()
        // and update the value of the variable weight
    }

    int price; // current price 
    void recalculatePrice() {
        // perform some heavily recursive stuff
        // involving Parent.recalculatePrice()
        // and update the value of the variable price
    } …
Run Code Online (Sandbox Code Playgroud)

c# java oop design-patterns

2
推荐指数
1
解决办法
855
查看次数