工厂方法模式

java设计模式

工厂方法模式

在简单工厂模式中,如果增加一个新的类,需要先扩展Base类,然后在工厂方法中增加判断。这样每增加一个类就需要增加一个判断,当增加的类多了,判断语句也越来越长,而且每次都需要修改代码,不符合“开闭原则”。这时为了减少判断语句并且尽量符合开闭原则,工厂方法就应运而生了。
在工厂方法中,为了实现更好的扩展性,将工厂类抽象出来,让每个类都有自己的工厂方法。所以在扩展Base类时,不需要再去修改工厂方法,只需扩展抽象工厂,生成此新类的工厂。简单UML类图如下:
图1 UML类图

简单代码如下

// 基类
public interface Base{
   public void method();
}
// 实现类Sub1
public class Sub1 implements Base {
	public void method() {
		System.out.println("this is Sub1...");
	}
}
// 实现类Sub2
public class Sub2 implements Base {
	public void method() {
		System.out.println("this is Sub2...");
	}
}

// 抽象工厂
public abstract class AbsFactory{
      public abstract Base createBase();
}
// Sub1具体工厂
public class Sub1Factory extends AbsFactory{
   public Base createBase(){
   	return new Sub1();
   }	
}
 // Sub2具体工厂
public class Sub2Factory extends AbsFactory{ 
	public Base createBase(){
		return new Sub2();
	}
}
 // 测试类
import org.junit.Test;

public class FactoryTest {
	
	@Test
	public void demo(){
		AbsFactory af = new Sub2Factory();
		Base sub1 = af.createBase();
		sub1.method();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值