2

I am wondering if there is a short cut for my current problem.

I have a List abcList.

It contains 3 type of objects/Entity A B C (they did not inherit a common interface or parent, with exception to Object>.

They are hibernate Entity.

I have 3 overloaded method.

process(A a)
process(B b)
process(B C)

I was hoping to loop the

List abcList and just calling process();

for(Object o: abcList) process(o);

is there an easy solution for my current problem? I am implementing a class that contain 3 different type of object List.


Automatically Create Wordpress Posts for Each Photo in my Media Folder

When I'm designing Wordpress sites for clients, many of the theme designs I use consist of several posts, each with one photo and a bit of text. As a result, I end up spending lots of time creating lots of posts with one picture each-- just so the layout works as expected. It seems like there should be a way to bulk add images to the Media folder (I use the Add from Server plugin) and then tell WP to create a bunch of separate posts containing one photo each.

Does anyone know how to do this? It seems like professional theme designers would get a lot of use out of a plugin that did this automatically.

Thanks! Chimera

4

3 に答える 3

3

バインディングはコンパイル時であるため、知ることは不可能です。これらのクラスにインターフェースを追加できる場合は、Visitorパターンを使用できます。

于 2012-08-10T02:48:25.380 に答える
1

訪問者のパターンに加えて、リストに追加する際に考慮すべきもう 1 つのことは、間接的なレイヤーを配置することです。オブジェクトを直接配置する代わりに、processオブジェクトと外部コンテキストの両方への参照を持つことができるオブジェクトを配置します。

于 2012-08-10T04:33:39.177 に答える
0

これは、ビジターパターンを使用するのに適した場所です。リフレクションに頼らずに、リスト内のオブジェクトに共通のインターフェースを定義する必要があります。そこから始めましょう:

interface Visitable {
    void accept(Visitor v);
}

次に、ビジターは、各コンクリートタイプのプロセスメソッドを定義する場所です。

interface Visitor {
    void process(A a);
    void process(B b);
    void process(C c);
}

これで、具象Visitableはprocess()、コンパイル時にそれ自体の具象型を認識しているため、の適切なオーバーロードを呼び出すことができます。例えば:

class A implements Visitable {
    void accept(Visitor v) {
        v.process(this);
    }
}

クラスBC同じことをします。これで、処理ループが発生します。

List<Visitable> abcList = ...;
Visitor visitor = ...;

for (Visitable o : abcList) {
    o.accept(visitor);
}

繰り返しますが、すべてのクラスに共通のインターフェースを定義できない場合でも、Reflectionを使用してVisitorPatternでこれを実現できます。

于 2012-08-10T03:26:30.583 に答える