美文网首页
第一个博客:简单的工厂

第一个博客:简单的工厂

作者: 蒙多的菜刀 | 来源:发表于2018-06-07 16:04 被阅读0次

决定开始写博客,为了能不断的学习,同时也方便回味学过的知识,万事开头难,先开始做起来!

package btp.oneP;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

//简单的工厂模式
public class RegisteredFactories {

    public static void main(String[] args) {
        for(int i=0;i<10;i++){
            System.out.println(Part.createRandom());
        }
    }

}

//抽象工厂 -> 可返回一个特定类型的对象实例
interface Factory<T>{T create();}

class Part{
    public String toString(){
        return this.getClass().getSimpleName();
    }
    //工厂注册写在基类的好处:可以用自身类型来存储
    static List<Factory<? extends Part>> partFactories = 
            new ArrayList<Factory<? extends Part>>();
    static{
        //工厂注册
        //工厂注册最好写在基类中,类型比较好处理
        partFactories.add(FuelFilter.factory());
        partFactories.add(AirlFilter.factory());
        partFactories.add(CabinAirlFilter.factory());
        partFactories.add(OilFilter.factory());
        partFactories.add(FanBelt.factory());
        partFactories.add(GeneratorBelt.factory());
        partFactories.add(PowerSteeringBelt.factory());
    }
    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 Factory<FuelFilter> factory(){
        return new Factory<FuelFilter>(){
            @Override
            public FuelFilter create() {
                // TODO Auto-generated method stub
                return new FuelFilter();
            }   
        };
    }   
}

class AirlFilter extends Filter{
    public static Factory<AirlFilter> factory(){
        return new Factory<AirlFilter>(){
            @Override
            public AirlFilter create() {
                // TODO Auto-generated method stub
                return new AirlFilter();
            }   
        };
    }   
}
class CabinAirlFilter extends Filter{
    public static Factory<CabinAirlFilter> factory(){
        return new Factory<CabinAirlFilter>(){
            @Override
            public CabinAirlFilter create() {
                // TODO Auto-generated method stub
                return new CabinAirlFilter();
            }   
        };
    }   
}
class OilFilter extends Filter{
    public static Factory<OilFilter> factory(){
        return new Factory<OilFilter>(){
            @Override
            public OilFilter create() {
                // TODO Auto-generated method stub
                return new OilFilter();
            }   
        };
    }   
}

class Belt extends Part{}

class FanBelt extends Belt{
    public static Factory<FanBelt> factory(){
        return new Factory<FanBelt>(){

            @Override
            public FanBelt create() {
                // TODO Auto-generated method stub
                return new FanBelt();
            }
            
        };
    }
}

class GeneratorBelt extends Belt{
    public static Factory<GeneratorBelt> factory(){
        return new Factory<GeneratorBelt>(){

            @Override
            public GeneratorBelt create() {
                // TODO Auto-generated method stub
                return new GeneratorBelt();
            }
            
        };
    }
}

class PowerSteeringBelt extends Belt{
    public static Factory<PowerSteeringBelt> factory(){
        return new Factory<PowerSteeringBelt>(){

            @Override
            public PowerSteeringBelt create() {
                // TODO Auto-generated method stub
                return new PowerSteeringBelt();
            }
            
        };
    }
}

相关文章

  • 第一个博客:简单的工厂

    决定开始写博客,为了能不断的学习,同时也方便回味学过的知识,万事开头难,先开始做起来!

  • 设计模式2.创建型模式

    点击进入我的博客 2.1 简单工厂模式 2.1.1 工厂模式的几种形态 工厂模式主要用一下几种形态: 简单工厂(S...

  • 设计模式2.1 简单工厂模式

    点击进入我的博客 2.1.1 工厂模式的几种形态 工厂模式主要用一下几种形态: 简单工厂(Simple Facto...

  • 简单工厂模式(一)

    总述 其实这篇博客说的是静态工厂模式,它是简单工厂模式的一种。 类图 实现 调用 输出 工厂 产品接口 A产品 B...

  • java 新世界设计模式(2)

    我们今天重新演绎一下抽象工厂类,工厂模式通常有简单工厂模式和抽象工厂模式。工厂模式是我第一个接触的设计模式。我清晰...

  • 工厂模式理解

    工厂模式分为简单工厂、工厂模式、抽象工厂三种层级概念。简单工厂不属于23种设计模式,抽象工厂才是。 简单工厂 简单...

  • 设计模式-工厂模式

    设计模式1 设计模式2 工厂模式 工厂模式可简单的分为三类:简单工厂,工厂方法,抽象工厂 简单工厂模式 定义 简单...

  • 简单工厂模式,工厂方法模式,抽象工厂模式(从放弃到入门)

    工厂模式,很多讲设计模式的书中,工厂模式都是第一个讲的模式,因为其最简单。但是在实际开发中,工厂模式是非常常见的。...

  • 工厂模式

    什么是工厂模式? 工厂模式分为三种:简单工厂工厂方法抽象工厂今天主要介绍的简单工厂:简单工厂(SimpleFact...

  • 工厂模式——IOS版

    一、前言 工厂模式种类:简单工厂、工厂方法、抽象工厂 IOS中的应用:类簇 二、简单工厂 介绍:简单工厂模式是属于...

网友评论

      本文标题:第一个博客:简单的工厂

      本文链接:https://www.haomeiwen.com/subject/czvgsftx.html