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(); }
//-------------------输出结果
做牛仔裤
做工装裤子!
【尽快补充上,谢谢理解~!】