设计模式之简单工厂-SimpleFactoryPattern

1.业务场景

   有三个快递公司,京东,中通,顺丰,现在要根据所选择的快递公司获取快递单号。

   快速实现业务逻辑处理,如下代码:

       在main()中,根据不同的条件创建不同的对象,对象的创建与对象的使用过程没有分离。

class JDservice{
    public String get(){
        return "快递单号";    
    }
}

class SFservice{
    public String get(){
        return "快递单号";    
    }
}
class ZTservice{
    public String get(){
        return "快递单号";    
    }
}

public static void main(String[] args) {
    if(sf){
       SFservice service = new SFservice();
        service.get();
    }
    if(jd){
       JDservice service = new JDservice();
        service.get();
    }
    if(zt){
       ZTservice service = new ZTservice();
       service.get();
    }
}

2. 使用工厂之后的代码

public class Factory{
    public static Factory getObject(String type){
            Factory factory = null;
            switch(type){
                case "sf":
                    factory = new SFservice();
                    break;
                case "jd":
                    factory = new JDservice();
                    break;
                case "zt":
                    factory = new ZTservice();
                    break;
            }
            return factory;
    }
}
public static void main(String[] args) {
    
    Factory factory = Factory.getObject("sf");
    factory.get();
}

3. 使用简单工厂的特点

##优点:

  1. 实现对象的创建和对象的使用分离,将对象的创建交给专门的工厂类负责。

##缺点:

  1. 在于工厂类不够灵活,增加新的具体产品需要修改工厂类的判断逻辑代码,而且产品较多时,工厂方法代码将会非常复杂,增加新的产品需要修改工厂类的判断逻辑,这一点与开闭原则是相违背的

##使用场景:

  1. 工厂类负责创建的对象比较少;客户端只知道传入工厂类的参数,对于如何创建对象不关心。

你可能感兴趣的:(23种设计模式,简单工厂模式,设计模式)