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

    模式定义

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

    模式结构

     模式分析

    简单工厂模式不属于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();
        }
    
    }

    测试结果

  • 相关阅读:
    php笔记小结
    php知识总结(二)
    php知识点总结(一)
    js冒泡排序及计算其运行时间
    空中飘动的云动画
    网站建设教程:WordPress如何在虚拟主机上安装
    网站建设教程之PageAdmin建站系统的安装
    免费CMS建站系统哪个比较好?如何选择?
    网站建设之自助建站系统的选择?
    企业外贸网站制作的要求及注意事项
  • 原文地址:https://www.cnblogs.com/2016-zck/p/13857504.html
Copyright © 2011-2022 走看看