注册工厂模式
来源:互联网 发布:淘宝的推广方式 编辑:程序博客网 时间:2024/06/06 17:32
工厂方法设计模式
将对象的创建工作交给类自己去完成。工厂方法可以被多态地调用,从而为你创建恰当类型的对象。
创建工厂方法接口,用于生成对象
package factory;
// factory interface
public interface Factory<T> {
T create();
}
创建生成工厂类
class Part {
public String toString() {
return getClass().getSimpleName();
}
static List<Factory<? extends Part>> partFactories = new ArrayList<>();
static {
partFactories.add(new FuelFilter.FactorySub());
partFactories.add(new AirFilter.FactorySub());
partFactories.add(new CabinFilter.FactorySub());
partFactories.add(new OilFilter.FactorySub());
partFactories.add(new FanBelt.FactorySub());
partFactories.add(new GeneratorBelt.FactorySub());
partFactories.add(new PowerSteeringBelt.FactorySub());
}
private static Random rand = new Random(47);
public static Part createRandom() {
int n = rand.nextInt(partFactories.size());
return partFactories.get(n).create();
}
}
class Filter extends Part {
}
class FuelFilter extends Filter {
public static class FactorySub implements Factory<FuelFilter> {
@Override
public FuelFilter create() {
return new FuelFilter();
}
}
}
class AirFilter extends Filter {
public static class FactorySub implements Factory<AirFilter> {
@Override
public AirFilter create() {
return new AirFilter();
}
}
}
class CabinFilter extends Filter {
public static class FactorySub implements Factory<CabinFilter> {
@Override
public CabinFilter create() {
return new CabinFilter();
}
}
}
class OilFilter extends Filter {
public static class FactorySub implements Factory<OilFilter> {
@Override
public OilFilter create() {
return new OilFilter();
}
}
}
class Belt extends Part {
}
class FanBelt extends Belt {
public static class FactorySub implements Factory<FanBelt> {
@Override
public FanBelt create() {
return new FanBelt();
}
}
}
class GeneratorBelt extends Belt {
public static class FactorySub implements Factory<GeneratorBelt> {
@Override
public GeneratorBelt create() {
return new GeneratorBelt();
}
}
}
class PowerSteeringBelt extends Belt {
public static class FactorySub implements Factory<PowerSteeringBelt> {
@Override
public PowerSteeringBelt create() {
return new PowerSteeringBelt();
}
}
}
利用工厂模式生成一个对象
public class RegisteredFactories {
public static void main(String[] args) {
System.out.println(Part.createRandom());
}
}
1 0
- 注册工厂模式
- Java注册工厂模式案例
- java实现的注册工厂模式
- 工厂模式、单例模式、注册树模式
- php中的工厂模式、单例模式、注册模式
- 工厂模式、单例模式、注册树模式
- 注册工厂
- PHP设计模式 二 (单例 工厂 注册)
- 设计模式三大基础模式之工厂模式,单例模式,注册树模式
- php 设计模式(注册器模式+工厂模式+数据库映射模式,单例模式+工厂模式+注册器模式混合使用)
- 慕课网----大话PHP设计模式 三(三种基本设计模式-工厂模式,单例模式,注册树模式)
- 自动注册工厂实例
- 工厂模式 -- 工厂方法
- 工厂模式 -- 抽象工厂
- 工厂模式-简单工厂
- 工厂模式-工厂方法
- 工厂模式:静态工厂
- 工厂模式-简单工厂
- ajax
- VIM常用指令篇
- Linux系统的命令别名功能
- JAVA基础【1.2】《Java核心技术1》Java程序设计概述-Java JDK1.5新特性【收集】
- H5页面支持拍照选择图片
- 注册工厂模式
- 分析下面的代码执行数顺序
- Python KMeans聚类分析
- c语言获取当前路径
- MySQL(8):视图和索引
- iOS开发之有间距的UITableViewCell
- conExcepression用法
- OpenStack网络指南(24)基于角色的访问控制 (RBAC)
- LeetCode Integer to Roman