java 工厂模式 从无到有-到简单工厂模式-到工厂方法模式-抽象工厂模式

工厂模式定义(百度百科):

工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。

一、没有使用工厂模式的实现:

clothes做衣服接口,Jeans 牛仔裤 WorkClothes 工装裤

package com.xxx.routine.intf;

public interface clothes {
    void doclothes(); //做衣服
}
package com.xxx.routine.implintf;

import com.xxx.routine.intf.Clothes;

//牛仔裤
public class Jeans implements Clothes {
    @Override
    public void doclothes() {
        System.out.println("做牛仔裤");
    }
}
package com.xxx.routine.implintf;

import com.xxx.routine.intf.Clothes;

//工装裤
public class WorkClothes implements Clothes {
    @Override
    public void doclothes() {
        System.out.println("做工装裤子!");
    }
}

测试实现:

package com.xxx.routine;

import com.xxx.routine.implintf.Jeans;
import com.xxx.routine.implintf.WorkClothes;
import com.xxx.routine.intf.Clothes;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class RoutineApplicationTests {

    @Test
    void contextLoads() {
        Clothes c1 = new Jeans();   //牛仔裤
        Clothes c2 = new WorkClothes(); //工装裤

        c1.doclothes();  //做牛仔裤
        c2.doclothes();  //做工装裤
    }
}
-------------输出-----------

做牛仔裤
做工装裤子!

二、简单工厂模式:

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

简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。

工厂(Creator)角色
简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。
抽象产品(Product)角色
简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
具体产品(Concrete Product)角色
是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。
package com.xxx.routine.factory;

import com.xxx.routine.implintf.Jeans;
import com.xxx.routine.implintf.WorkClothes;
import com.xxx.routine.intf.Clothes;

//做衣服工厂
public class ClothesFactory {
    public static Clothes createClothes(String type){
        if("jeans".equals(type)){
            return new Jeans();
        }else if ("workclothes".equals(type)){
            return new WorkClothes();
        }else {
            return null;
        }
    }
}
    @Test //简单工厂方法测试
    void SimpleFactory(){
        Clothes jeans = ClothesFactory.createClothes("jeans");
        Clothes workclothes = ClothesFactory.createClothes("workclothes");

        jeans.doclothes();
        workclothes.doclothes();
    }
//-------------------输出结果
做牛仔裤
做工装裤子!

 【尽快补充上,谢谢理解~!】

猜你喜欢

转载自www.cnblogs.com/belen87/p/11930407.html