通过接口来实现,并使用工厂设计模式,将对象的创建工做交给类自己去完成。
列:注册工厂
package com.package14.Two;import java.util.ArrayList;import java.util.List;import java.util.Random;public interface Fatory <T>{//使用泛型可以在每种实现里返回不同的类型T create();}class Part{@Overridepublic String toString() {return getClass().getSimpleName();}static List<Fatory<?extends Part>> parts=new ArrayList<>();static{parts.add(new FueFilter.Fac());parts.add(new AirFilter.Fac());}private static Random random=new Random(47);public static Part createClass(){int i = random.nextInt(parts.size());return parts.get(i).create();//获得生成的实例}}class Filter extends Part{}class FueFilter extends Filter{public static class Fac implements Fatory<FueFilter>{@Overridepublic FueFilter create() {return new FueFilter();}}}class AirFilter extends Filter{public static class Fac implements Fatory<AirFilter>{@Overridepublic AirFilter create() {return new AirFilter();//返回一个实例对象}}}public class RegisterFactoires {public static void main(String[] args) {for (int i = 0; i <5 ; i++) {System.out.println(Part.createClass());}}}
