美文网首页
【设计模式】——工厂模式_简单工厂模式

【设计模式】——工厂模式_简单工厂模式

作者: 从不打小怪兽 | 来源:发表于2020-06-15 16:58 被阅读0次

    要点

    • 简单工厂模式也叫静态工厂模式(方法里面都为静态)。就是工厂类一般使用静态方法,通过接收的参数的不同来返回不同的对象实例。
    • 对于增加的新产品无能为力!不修改代码的话,是无法扩展的。

    这是个简单工厂实例

    • 如何实现创建者和调用者的分离
    1. 首先建立个接口
    interface  Car {
        void run();
    }
    
    1. 然后是两个实现类
    public class Benz implements Car{
    
        @Override
        public void run() {
            System.out.println("我是奔驰!");
        }
    }
    
    public class BMW implements Car{
    
        @Override
        public void run() {
            System.out.println("我是宝马");
        }
    }
    

    \color{red}{3. 不使用工厂模式情况下,直接调用的方法通常如下}

    /**
     * 不调用工厂的情况下
     * @author Sakura
     *
     */
    public class Client01 {
        
        public static void main(String[] args) {
            
            Car c1=new Benz();
            Car c2=new BMW();
            
            c1.run();
            c2.run();
        }
    }
    

    控制台:

    我是奔驰!
    我是宝马

    \color{red}{4. 使用工厂模式情况下,调用的方法}

    • 先建立工厂
    /**
     * 工厂
     * @author Sakura
     *
     */
    public class CreatCarFactory{
        //第一种实现方式,添加所有子类
        public static Car creatCar(String type){
            if("BMW".equals(type)){
                return new BMW();
            }else if("Benz".equals(type)){
                return new Benz();
            }else{
                return null;
            }
        }
        //第二种实现方式,为每个子类添加方式
        public static Car creatBMW(){
            return new BMW();
        }
        
        public static Car creatBenz(){
            return new Benz();
        }
    
    }
    
    • 简单的调用工厂(静态工厂模式)
    /**
     * 调用简单工厂
     * @author Sakura
     *
     */
    public class Client02 {
        public static void main(String[] args) {
            Car c1=CreatCarFactory.creatCar("BMW");
            Car c2=CreatCarFactory.creatCar("Benz");
            Car c3=CreatCarFactory.creatBenz();
            Car c4=CreatCarFactory.creatBMW();
            
            c1.run();
            c2.run();
            c3.run();
            c4.run();
        }
    }
    

    控制台:

    我是宝马
    我是奔驰!
    我是奔驰!
    我是宝马

    相关文章

      网友评论

          本文标题:【设计模式】——工厂模式_简单工厂模式

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