java 工厂模式 注册,java实现的注册工厂模式

package com.eric.reflect;

import java.util.ArrayList;

import java.util.Random;

/*

* factory interface

* */

interface Factory {

public T create();

}

public class RegisterFactory {

public static void main(String[] args) {

System.out.println(Part.randomPart());

}

}

class Part {

private static ArrayList> factoryList = new ArrayList>();

/*

* registry all factory in factoryList when initialize class

* */

static {

factoryList.add(new AirFilter().new AirFilterFactory());

factoryList.add(new CabinFilter().new CabinFilterFactory());

factoryList.add(new CabinBelt().new CabinBeltFactory());

factoryList.add(new AirBelt().new AirBeltFactory());

}

public static Part randomPart() {

return factoryList.get(new Random().nextInt(factoryList.size()))

.create();

}

@Override

public String toString() {

return getClass().getSimpleName();

}

}

class Filter extends Part {

}

class Belt extends Part {

}

class AirBelt extends Belt {

class AirBeltFactory implements Factory {

public AirBelt create() {

return new AirBelt();

}

}

}

class CabinBelt extends Belt {

class CabinBeltFactory implements Factory {

public CabinBelt create() {

return new CabinBelt();

}

}

}

class AirFilter extends Filter {

class AirFilterFactory implements Factory {

public AirFilter create() {

return new AirFilter();

}

}

}

class CabinFilter extends Filter {

class CabinFilterFactory implements Factory {

public CabinFilter create() {

return new CabinFilter();

}

}

}

/*

*

* History:

*

*

*

* $Log: $

*/

package com.eric.reflect; import java.util.ArrayList; import java.util.Random; /* * factory interface * */ interface Factory { public T create(); } public class RegisterFactory { public static void main(String[] args) { System.out.println(Part.randomPart()); } } class Part { private static ArrayList> factoryList = new ArrayList>(); /* * registry all factory in factoryList when initialize class * */ static { factoryList.add(new AirFilter().new AirFilterFactory()); factoryList.add(new CabinFilter().new CabinFilterFactory()); factoryList.add(new CabinBelt().new CabinBeltFactory()); factoryList.add(new AirBelt().new AirBeltFactory()); } public static Part randomPart() { return factoryList.get(new Random().nextInt(factoryList.size())) .create(); } @Override public String toString() { return getClass().getSimpleName(); } } class Filter extends Part { } class Belt extends Part { } class AirBelt extends Belt { class AirBeltFactory implements Factory { public AirBelt create() { return new AirBelt(); } } } class CabinBelt extends Belt { class CabinBeltFactory implements Factory { public CabinBelt create() { return new CabinBelt(); } } } class AirFilter extends Filter { class AirFilterFactory implements Factory { public AirFilter create() { return new AirFilter(); } } } class CabinFilter extends Filter { class CabinFilterFactory implements Factory { public CabinFilter create() { return new CabinFilter(); } } } /* * * History: * * * * $Log: $ */
经验分享 程序员 微信小程序 职场和发展