• 简单工厂模式


    1. 本质:就是帮助我们创建对象使用的。就是将调用者和创建者的分离
    2. 工厂模式分为:简单工厂、工厂方法模式、抽象工厂模式
    3. 简单工厂模式实现
    4. 首先写一下不使用工厂模式,创建对象

    接口代码:

    package kw.test.gcms;
    public interface Car {
        public void run();
    
    }

    实现类1:

    package kw.test.gcms;
    
    public class BenBen implements Car{
    
        @Override
        public void run() {
            // TODO Auto-generated method stub
            System.out.println("我是benben");
        }
    
    }

    实现类2:

    package kw.test.gcms;
    
    public class HongQi implements Car{
    
        @Override
        public void run() {
            // TODO Auto-generated method stub
            System.out.println("我是hongqi!");
        }
    
    }

    客户端代码

    package kw.test.gcms;
    
    public class NoGcMo {
        public static void main(String[] args) {
            BenBen ben = new BenBen();
            ben.run();
            HongQi hongQi = new HongQi();
            hongQi.run();
        }
    }

    5.使用简答工厂方法

    方式1:

    package kw.test.gcms;
    
    public class CarFactory {
        public static Car run(String name)
        {
            if("hongqi".equals(name)) {
                return new HongQi();
            }else if("benben".equals(name))
            {
                return new BenBen();
            }else
            {
                return null;
            }
        }
    }

    注意:上面if("hongqi".equals(name))是为了防止未传入参数,而抛出异常。

    客户端代码

    package kw.test.gcms;
    
    public class GcMs {
        public static void main(String[] args) {
            Car hongqi = CarFactory.run("hongqi"); 
            Car benben = CarFactory.run("benben");
            hongqi.run();
            benben.run();
        }
    /*
     * 这对于代码 是增多 了。但是对于调用者是简单了。
     * 
     * 它的缺点就是,增加方法的时候,需要修改不源代码,违背了开闭原则。
     */
    }

    实现方式二:

    package kw.test.gcms;
    
    /*
     * 简单工厂实现方式二
     */
    public class CarFactory2 {
        public static Car hongqi() {
            return new HongQi(); 
        }
        public static Car benben() {
            return new BenBen();
        }
    
    }

    一般使用静态的方式,目的是为了使用类名调用方法。

  • 相关阅读:
    ehcache 使用
    android 换肤 apk
    ant 打不同渠道包
    strawberry perl
    rest 网络设计开发,降低复杂性设计方案
    android 进度条
    android 算定义布局xml
    ant 自动打包
    c# 调用cmd 输出 阻塞 解决
    web service2
  • 原文地址:https://www.cnblogs.com/kw28188151/p/8548824.html
Copyright © 2020-2023  润新知