加入收藏 | 设为首页 | 会员中心 | 我要投稿 葫芦岛站长网 (https://www.0429zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Java达成的注册工厂模式

发布时间:2021-11-24 13:37:29 所属栏目:教程 来源:互联网
导读:Java实现的注册工厂模式 package com.eric.reflect; import java.util.ArrayList; import java.util.Random; /* * factory interface * */ interface FactoryT { public T create(); } public class RegisterFactory { public static void main(String[] arg

 Java实现的注册工厂模式
 
  
package com.eric.reflect;  
  
import java.util.ArrayList;  
import java.util.Random;  
/*
 * factory interface
 * */  
interface Factory<T> {  
    public T create();  
}  
  
public class RegisterFactory {  
  
    public static void main(String[] args) {  
        System.out.println(Part.randomPart());  
    }  
}  
  
class Part {  
    private static ArrayList<Factory<? extends Part>> factoryList = new ArrayList<Factory<? extends Part>>();  
    /*
     * 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<AirBelt> {  
        public AirBelt create() {  
            return new AirBelt();  
        }  
    }  
}  
  
class CabinBelt extends Belt {  
    class CabinBeltFactory implements Factory<CabinBelt> {  
        public CabinBelt create() {  
            return new CabinBelt();  
        }  
    }  
}  
  
class AirFilter extends Filter {  
    class AirFilterFactory implements Factory<AirFilter> {  
        public AirFilter create() {  
            return new AirFilter();  
        }  
    }  
}  
  
class CabinFilter extends Filter {  
    class CabinFilterFactory implements Factory<CabinFilter> {  
        public CabinFilter create() {  
            return new CabinFilter();  
        }  
    }  
}  
  
/*
 *  
 * History:
 *  
 *  
 *  
 * $Log: $
 */    

(编辑:葫芦岛站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!