java设计模式一一工厂模式
- 1、什么是工厂模式
- 2、工厂模式的作用
- 3、工厂模式优缺点
- 4、代码示例
- 4.1-公共支付接口
- 4.2-每个不同的支付类
- 4.3-支付工厂类
- 4.4-测试类
- 5、测试
1、什么是工厂模式
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
2、工厂模式的作用
1、工厂模式是为了解耦
把对象的创建和使用的过程分开。就是class A 调用 class B,那么只是调用B的方法,而至于B的实例化就交给工厂类
2、工厂模式可以降低代码的重复
如果创建class B的过程很复杂,需要一定的代码量,而且很多地方都需要用到,那么就会用重复的代码。可以把这些创建对象B的代码放到工厂里统一管理。即减少了代码业方便以后的维护。
3、工厂模式可以减少错误
因为工厂管理对象的创建逻辑,使用者不需要知道具体的创建过程,只管使用即可,减少了使用者因为创建导致的错误。
工厂模式可以分为:简单工厂,工厂方法,抽象工厂,静态工厂模式
3、工厂模式优缺点
**优点:**
1、一个调用者想创建一个对象,只要知道其名称就可以了。
2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。
3、屏蔽产品的具体实现,调用者只关心产品的接口。
**缺点:**
每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。这并不是什么好事。
4、代码示例
4.1-公共支付接口
@Component
public interface PaymentService {
public void pay();
}
4.2-每个不同的支付类
public class AliPaySercice implements PaymentService {
@Override
public void pay() {
System.out.println("阿里支付对象...");
}
}
public class WeChatService implements PaymentService {
@Override
public void pay() {
System.out.println("微信支付对象...");
}
}
4.3-支付工厂类
class PayMentFactory {
public PaymentService getPaymentService(String payType) {
PaymentService paymentService = null;
switch (payType) {
case "ali_pay":
paymentService = new AliPaySercice();
break;
case "wechat_pay":
paymentService = new WeChatService();
break;
}
return paymentService;
}
}
4.4-测试类
public class PayMentFactoryTest {
public static void main(String[] args) {
PayMentFactory payMentFactory = new PayMentFactory();
PaymentService ali_pay = payMentFactory.getPaymentService("ali_pay");
ali_pay.pay();
PaymentService wechat_pay = payMentFactory.getPaymentService("wechat_pay");
wechat_pay.pay();
}
}
5、测试