zoukankan      html  css  js  c++  java
  • 工厂模式

    简介  

      工厂模式是一种常见的设计模式,该模式属于创建型模式,它提供了一种简单,快速,高效而安全地创建对象的方式。工厂模式在接口中定义了创建对象的方法,而将具体的创建对象的过程在子类中实现,用户只需要通过接口创建需要的对象即可,不用关注对象的具体创建过程。同时,不同的子类可根据需求灵活实现创建对象的不同方法。

      以创建手机为例,假设手机的品牌有华为和苹果两种类型,我们要实现的是根据不同的传入参数实例化不同的手机。

    具体实现

      1.定义接口

    public interface Phone {
        void brand();
    }

      以上代码定义了一个Phone接口,并在接口中定义brand(),用来输出手机的品牌。

      2.定义实现类

    public class Iphone implements Phone {
        @Override
        public void brand() {
            System.out.println("this is a Apple phone");
        }
    }
    public class HuaWei implements Phone {
        @Override
        public void brand() {
            System.out.println("this is a huawei phone");
        }
    }

      以上代码定义了两个Phone的实现类,两个品牌的手机通过brand()打印自己的品牌。

      3.定义工厂类

    public class Factory {
        public Phone createPhone(String phoneName){
            if("Apple".equals(phoneName)){
                return new Iphone();
            }else if("HuaWei".equals(phoneName)){
                return new HuaWei();
            }else{
                return null;
            }
        }
    }

      以上代码定义了工厂类Factory,工厂类有一个方法createFactory(),用来根据不同的参数实例化不同的手机并返回,调用者不知道实例化的内部细节。

      4.使用工厂模式

    public static void main(String[] args) {
        Factory factory = new Factory();
        Phone huawei = factory.createPhone("HuaWei");
        Phone iphone = factory.createPhone("Apple");
        huawei.brand();
        iphone.brand();
    }

      结果输出如下

    this is a huawei phone
    this is a Apple phone
    

      

  • 相关阅读:
    [程序员代码面试指南]数组和矩阵问题-未排序正数数组中累加和为给定值的最长子数组长度
    [Mysql]知识点
    [SSM项目]一-Eclipse 搭建marven-web项目 hello world!
    [BZOJ2252]矩阵距离(BFS)
    [Spring实战笔记]4面向切面编程的Spring-代理
    [程序员代码面试指南]数组和矩阵问题-找到无序数组中最小的k个数(堆排序)
    [Java]刷题中的Java基础
    MySql的大小写问题
    MySql密码丢失
    MySql的rpm安装
  • 原文地址:https://www.cnblogs.com/silentteller/p/12764943.html
Copyright © 2011-2022 走看看