• 简单工厂模式


    模式定义

    简单工厂模式:又称为静态工厂方法模式,属于类的创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例,简单工厂模式单独创建一个工厂类负责创建其他类的实例。被创建的实例具有共同的父类。

    模式结构

     模式分析

    简单工厂模式不属于Gof 23个基本设计模式,但可以作为学习Gof的工厂模式的一个先导。简单工厂模式的要点在于,当你需要什么,只要传入一个正确的参数,就可以获取你想要的实例对象,而无需知道其创建细节。

    优点:

    (1)工厂类中含有必要的判断逻辑,用户可以免除创建对象的责任,它提供了一个专门的工厂类。

    (2)用户无需知道具体的产品类的类名,只需知道产品类对应的参数,减少使用者的记忆量。

    (3)在一定程度上,提高系统的灵活性。

    缺点:

    (1)一旦工厂类无法运行,会导致整个系统瘫痪

    (2)会增加系统的类数,在一定程度上增加了系统的复杂度和理解难度

    (3)系统扩展困难,产品类型较多时,工厂类的逻辑会更复杂,不利于系统的扩展和维护。

    电视案例

    TV接口类

    package com.zck.simpleFactory;
    
    public interface TV {
        public void play();
    }

    HaierTV类

    package com.zck.simpleFactory;
    
    public class HaierTV implements TV {
    
        public void play() {
            System.out.print("海尔电视正在播放
    ");
        }
    
    }

    HisenseTV类

    package com.zck.simpleFactory;
    
    public class HisenseTV implements TV {
    
        public void play() {
            System.out.print("海信电视正在播放
    ");
        }
    
    }

    工厂类

    package com.zck.simpleFactory;
    
    public class TVFactory {
        public static TV produceTV(String brand){
            if (brand.equalsIgnoreCase("haier")) {
                return new HaierTV();
            }
            else if (brand.equalsIgnoreCase("hisense")) {
                return new HisenseTV();
            }else{
                return null;
            }
        }
    }

    测试类

    package com.zck.simpleFactory;
    
    public class Client {
    
        public static void main(String[] args) {
            TV tv1,tv2;
            tv1 = TVFactory.produceTV("haier");
            tv1.play();
            tv2 = TVFactory.produceTV("hisense");
            tv2.play();
        }
    
    }

    测试结果

  • 相关阅读:
    git常用操作的总结
    Vue全局错误捕获
    Vue全局布局组件的设计
    Python 创建守护进程
    常用代码集合
    Linux -- 终端命令快捷键汇总
    MySQL -- 查询结果 直接导出至本地文件
    Linux -- 守护进程
    ConcurrentWebSocketSessionDecorator(并发安全的websocket) The remote endpoint was in state [TEXT_PARTIAL_WRITING]
    Ubuntu安装docker
  • 原文地址:https://www.cnblogs.com/2016-zck/p/13857504.html
Copyright © 2020-2023  润新知