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

    简单工厂模式是最简单的工厂模式,又叫静态工厂方法模式。它实现了同一接口的一些类进行实例的创建,一个工厂通过条件语句创建多个产品,产品的创建逻辑集中在一个工厂类中,客户听过传递不同的参数给工厂,实现创建不同产品的目的。如下:

                                                        

    Phone是一个接口,其有一个行为是ring, NokiaPhone和EricssonPhone分别实现了这个接口,在客户端使用时通过传入的是什么手机类型,而得到不同的手机。实现如下:

    Phone.java:

     package org.designpattern.creational.simplefactory;

         public interface Phone {
         public void ring();
         }

    NokaiPhone.java

        package org.designpattern.creational.simplefactory;
        public class NokiaPhone implements Phone {
            @Override
            public void ring() {
                // TODO Auto-generated method stub
                System.out.println("nokia phone ring!");
            }
        } 

      EricssonPhone.java

        package org.designpattern.creational.simplefactory;
        public class EricssonPhone implements Phone {
            @Override
            public void ring() {
                // TODO Auto-generated method stub
                System.out.println("ericsson phone ring!");
            }
        } 

      PhoneFactory.java

        package org.designpattern.creational.simplefactory;
        public class PhoneFactory {
            public Phone producePhone(String phoneType){
                if("nokia".equals(phoneType))
                    return new NokiaPhone();
                else if("ericsson".equals(phoneType))
                    return new EricssonPhone();
                else return null;
            }

        } 

    如果将PhoneFactory的写成两个静态的方法public static Phone produceNokiaPhone(),public static Phone produceEricssionPhone(),这种创建方法我们称之为静态工厂模式,其实我们使用较多的还是静态工厂模式。 

      使用时的客户端类:

        package org.designpattern.creational.simplefactory;
        public class Main {
            public static void main(String[] args){
                NokiaPhone nokia = (NokiaPhone) new PhoneFactory().producePhone("nokia");
                nokia.ring();
            }

        } 

      可见这个工厂类集中了所有的产品的创建逻辑,形成了一个无所不知的全能类,显然如果这个类不能工作了,则整个程序就会受到影响。更主要是这样不利于扩展,如果应用中需要的工厂类型较多,势必造成工厂类型的职责雷同,因此我们需要更进一步的抽象了,于是就出现了工厂方法和抽象工厂模式。

  • 相关阅读:
    【软件工程Ⅱ】作业二 |分布式版本控制系统Git的安装与使用
    【软件工程Ⅱ】作业一 |走进计算机
    字符串、文件操作,英文词频统计预处理
    了解大数据的特点、来源与数据呈现方式
    作业五:结对项目-“四则运算”之升级版
    第四次作业:小学四则运算“软件”之初版
    阅读《构建之法》1-5章的感想
    作业二/Git的安装以及使用
    大三学习软件工程感想
    爬取全部的校园新闻
  • 原文地址:https://www.cnblogs.com/kingcucumber/p/3191883.html
Copyright © 2011-2022 走看看