工厂模式UML类图:
工厂模式类图角色说明:
- Product:抽象产品角色
- ConcreteProduct:具体产品角色
- Creator:抽象工厂角色
- ConcreteCreator:具体工厂角色
工厂模式,主要是对象的创建,提供了一种创建对象的方式,而无需指定要创建的具体类。
以支付举例,我们要实现接入微信和支付宝支付。
一、抽象工厂类
package com.meng.pay.strategy.factory;
public abstract class AbstractPayFactory<T> {
public abstract T getPayByType(Integer payType);
}
二、具体工厂类
package com.meng.pay.strategy.factory;
import com.meng.pay.strategy.AlipayStrategy;
import com.meng.pay.strategy.PayStrategyInterface;
import com.meng.pay.strategy.WechatStrategy;
import org.springframework.stereotype.Component;
@Component
public class PayFactory extends AbstractPayFactory<PayStrategyInterface> {
@Override
public PayStrategyInterface getPayByType(Integer payType) {
if(payType == 1){
return new AlipayStrategy();
}else if(payType == 2){
return new WechatStrategy();
}else{
throw new UnsupportedOperationException("payType not supported!");
}
}
}
三、抽象产品类
package com.meng.pay.strategy;
import com.meng.model.Order;
public interface PayStrategyInterface {
String pay(Order order);
}
四、具体产品类
支付宝支付实现类:
package com.meng.pay.strategy;
import com.meng.model.Order;
public class AlipayStrategy implements PayStrategyInterface{
@Override
public String pay(Order order) {
return "Alipay pay success!";
}
}
微信支付实现类:
package com.meng.pay.strategy;
import com.meng.model.Order;
public class WechatStrategy implements PayStrategyInterface{
@Override
public String pay(Order order) {
return "Wechat pay success!";
}
}