美文网首页
工厂模式

工厂模式

作者: 全栈未遂工程师 | 来源:发表于2016-03-21 15:53 被阅读46次

    简单工厂模式

    建立一个工厂类,对实现了同一接口的一些类进行实例的创建。工厂类根据传入参数的不同创建不同的对象。

    简单工厂模式
    package com.normalFactory;
    /**
     * ClassName: MobileFactory 
     * @Description:普通工厂模式:建立一个工厂类,对实现了同一接口的一些类进行实例的创建。 
     * @date 2015年10月12日
     */
    public class MobileFactory {
        public Mobile build(String type){
            if(type.equals("Samsung")){
                return new Samsung();
            }else if(type.equals("Huawei")){
                return new Huawei();
            }
            return null;
        }
    }
    
    package com.normalFactory;
    
    public interface Mobile {
        public void runFunc();
    }
    
    
    package com.normalFactory;
    
    public class Huawei implements Mobile {
        @Override
        public void runFunc() {
            System.out.println("Huawei");
        }
    }
    
    
    package com.normalFactory;
    
    public class Samsung implements Mobile {
        @Override
        public void runFunc() {
            System.out.println("Samsung");
        }
    }
    
    package com.normalFactory;
    
    public class Main {
        public static void main(String[] args) {
            MobileFactory mf = new MobileFactory();
            Mobile samsung = mf.build("Samsung");
            Mobile huawei = mf.build("Huawei");
            samsung.runFunc();
            huawei.runFunc();
        }
    }
    

    工厂方法模式

    定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

    工厂方法模式
    package com.factoryMethod;
    /**
     * ClassName: MobileFactory 
     * 简单工厂模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则。
     * 所以,从设计角度考虑,有一定的问题,如何解决?就用到工厂方法模式,创建工厂接口和多个工厂类,这样一旦需要增加新的功能,
     * 直接增加新的工厂类就可以了,不需要修改之前的代码。
     * @date 2015年10月12日
     */
    public interface MobileFactory {
        public Mobile build();
    }
    
    package com.factoryMethod;
    
    public class HuaweiFactory implements MobileFactory {
        @Override
        public Mobile build() {
            return new Huawei();
        }
    }
    
    package com.factoryMethod;
    
    public class SamsungFactory implements MobileFactory {
        @Override
        public Mobile build() {
            return new Samsung();
        }
    }
    
    package com.factoryMethod;
    
    public interface Mobile {
        public void runFunc();
    }
    
    
    package com.factoryMethod;
    
    public class Samsung implements Mobile {
        @Override
        public void runFunc() {
            System.out.println("Samsung");
        }
    }
    
    package com.factoryMethod;
    
    public class Huawei implements Mobile {
        @Override
        public void runFunc() {
            System.out.println("Huawei");
        }
    }
    
    
    package com.factoryMethod;
    
    public class Main {
        public static void main(String[] args) {
            MobileFactory fac = new SamsungFactory();
            Mobile samsung = fac.build();
            samsung.runFunc();
        }
    }
    

    抽象工厂模式

    提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。

    抽象工厂模式

    我感觉,抽象工厂模式和工厂方法模式一样,只是工厂方法是创建一个对象,而抽象工厂模式是创建一组对象而已。(不知道这种理解对不对)

    相关文章

      网友评论

          本文标题:工厂模式

          本文链接:https://www.haomeiwen.com/subject/tjpklttx.html