创建模式——简单工厂模式

1、概要
    简单工厂模式是一个对象创建型模式,它定义了一个用于创建对象的接口,让子类决定实例化哪一个类,它使得一个类的实例化延迟到了子类。
2、使用场景
    为什么要使用工厂模式,它能帮助解决什么问题?面向对象的封装(Encapsulation)和分派(Delegation)告诉我们,尽量将长的代码分派“切割”成每段,将每段再“封装”起来(减少段和段之间偶合联系性),这样就会将风险分散,以后如果需要修改,只要更改每段,不会再发生牵一动百的事情了。使用工厂模式,能够将创建实例和使用实例分开,封装了使用者将得到那些具体类的信息,并且隐藏了这些类的实例是如何被创建和放在一起的。
3、结构图

4、实例
    先看看Product接口:
package simpleFactory;

public interface Product {
   public void doSth();
}
    
    再看看和他关联的具体的类:
package simpleFactory;

public class ConcreteProduct1 implements Product {
    public void doSth(){
        System.out.print("this is product1");
    }
}

package simpleFactory;

public class ConcreteProduct2 implements Product {
        public void doSth(){
        System.out.print("this is product2");
    }
}

package simpleFactory;

public class ConcreteProduct3 implements Product {
        public void doSth(){
        System.out.print("this is product3");
    }
}

package simpleFactory;

public class ConcreteProduct4 implements Product {
        public void doSth(){
        System.out.print("this is product4");
    }
}
    最后是工厂方法的核心类:
package simpleFactory;

public class Creator {
    public static Product productFactory(int which) {

        switch(which){
        case 1:
            return new ConcreteProduct1();
            break;
        case 2:
            return new ConcreteProduct2();
            break;
        case 3:
            return  new ConcreteProduct3();
            break;
        case 4:
            return  new ConcreteProduct4();
            break;
        default:
            return null;
        }
    }   
}
5、优缺点
    优点如下:
    客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。
    缺点也很明显:
    当产品修改时,工厂类也要做相应的修改。有点违背了开—闭原则。
    

 

你可能感兴趣的:(设计模式)