zoukankan      html  css  js  c++  java
  • java设计模式-工厂方法模式

    模式描述

    工厂方法模式提供一个用于创建产品的接口,由实现类决定实现哪些产品。工厂方法模式使一个类的实例化延迟到子类,并且只适用于一个产品的等级结构。

    优点

    可以一定程度上解耦,消费者和产品实现类隔离开,只依赖产品接口(抽象产品),产品实现类如何改动与消费者完全无关。

    例子

    还是以之前简单工厂的手机为案例:

    /**
     * 产品接口
     */
    public interface Phone {
        public Phone getPhone();
    }
    
    
    package factory;
    
    /**
     * 苹果
     */
    public class AppleFactory implements Phone {
    
        @Override
        public Phone getPhone() {
            return new AppleFactory();
        }
    
        public String getName()
        {
            return "apple";
        }
    }
    
    
    package factory;
    
    /**
     * vivo
     */
    public class VivoFactory implements Phone {
        @Override
        public Phone getPhone() {
            return new VivoFactory();
        }
    }
    
    
    package factory;
    
    /**
     * 消费者
     */
    public class Coustomer {
        public static void main(String[] args) {
            Phone phone = new AppleFactory();
            System.out.println(phone.getPhone());
        }
    }

    和简单工厂区别

    1:工厂模式方法(factory method),定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。 

    2:工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断移到了客户端代码来进行。你想要加功能,本来是要改工厂类的,而现在是修改客户端。 

  • 相关阅读:
    7-3 列表或元组的数字元素求和 (20 分)
    7-2 一帮一 (15 分)
    7-11 字典合并 (40 分)
    7-6 统计工龄 (20 分)
    7-5 统计字符出现次数 (20 分)
    7-4 分析活动投票情况 (20 分)
    7-3 四则运算(用字典实现) (30 分)
    7-22 找鞍点 (20 分)
    制作 U 盘启动盘
    mysql 多表连接的
  • 原文地址:https://www.cnblogs.com/talkingcat/p/10391071.html
Copyright © 2011-2022 走看看