导航

工厂模式之简单工厂模式(SimpleFactory)

Posted on 2019-05-27 12:00  小红草莓  阅读(128)  评论(0)    收藏  举报

工厂模式分为:简单工厂模式、工厂方法模式和抽象工厂模式,本文主要讲述简单工厂模式。

1.简单工厂(simpleFactory)

简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

 下面是我的小测试,创建一个衣服厂(SimpleClothesFactory),可以生产裙子(Dress),裤子(Trousers)和上衣(skirt)

  • 创建衣服的抽象方法
// 衣服 抽象
public abstract class Clothes {
    
    public abstract void desc();

}
  • 裙子(Dress)
package com.headerFirstTest.factoryPattern.simpleFactory.MyTest;

//连衣裙
public class Dress extends Clothes{

    @Override
    public void desc() {
        System.out.println("生产连衣裙");
        
    }

}
  • 裤子(Trousers)
package com.headerFirstTest.factoryPattern.simpleFactory.MyTest;

//裤子
public class Trousers extends Clothes{

    @Override
    public void desc() {
        System.out.println("生产裤子");
        
    }

}
  • 上衣(skirt)
package com.headerFirstTest.factoryPattern.simpleFactory.MyTest;

//上衣
public class Skirt extends Clothes{

    @Override
    public void desc() {
        System.out.println("生产上衣");
        
    }

}
  • 衣服工厂
package com.headerFirstTest.factoryPattern.simpleFactory.MyTest;

//衣服工厂
public class SimpleClothesFactory {
    
    public static final int TYPE_Dress = 1;
    
    public static final int TYPE_Trousers = 2;
    
    public static final int TYPE_Skirt = 3;
    
    public static Clothes createClothes(int type){
        if (type == TYPE_Dress) {
            return new Dress();
        }else if (type == TYPE_Trousers) {
            return new Trousers();
        }else if(type == TYPE_Skirt) {
            return new Skirt();
        }else{
            return new Dress();
        }
        
    }    
}
  • 测试
package com.headerFirstTest.factoryPattern.simpleFactory.MyTest;

public class Test {
    public static void main(String[] args) {
    Clothes dress = SimpleClothesFactory.createClothes(SimpleClothesFactory.TYPE_Dress);
    dress.desc();
    
    Clothes trousers = SimpleClothesFactory.createClothes(SimpleClothesFactory.TYPE_Trousers);
    trousers.desc();
    
    Clothes skirt = SimpleClothesFactory.createClothes(SimpleClothesFactory.TYPE_Skirt);
    skirt.desc();
    }

}
  • 结果
生产连衣裙
生产裤子
生产上衣