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

    图片来自head first 设计模式,仅供学习之用

    一直没有体会到工厂方法的实际意义,因为我对工厂方法的理解还不够,就是没有实际写过代码,因为平时写代码都是直接new,体会不到工厂方法模式的作用。

    当代码使用大量的具体类时,需要考虑工厂方法模式了。

    head first 里的依赖倒置原则我不是很懂

    首先关于工厂有三个模式,分别是简单工厂模式,工厂方法模式,抽象工厂模式,我把这三个概念混淆了,把工厂方法当成简单工厂,把抽象工厂当成工厂方法= =(貌似我经常犯这种张冠李戴的错误。。)可怜的简单工厂模式被我给忽略了。

    简单工厂模式

    public class SimplePizzaFactory {
        public Pizza createPizza(String type){
            Pizza pizza=null;
            if(type.equals("cheese")){
                pizza=new CheesePizza();
            }
            else if(type.equals("greek")){
                pizza=new GreekPizza();
            }
            else if (type.equals("pepperoni")){
                pizza=new PepperoniPizza();
            }
            return pizza;
        }
    }

    直接提取产生对象的代码到一个工厂类中: ) 几乎不能定制

    工厂方法模式

    public abstract class PizzaStore {
    
        public Pizza orderPizza(String type){
            Pizza pizza=null;
            pizza=createPizza(type);
            pizza.prepare();
            pizza.bake();
            pizza.cut();
            pizza.box();
            return pizza;
        }
        protected abstract Pizza createPizza(String type);//披萨实例化的责任移动到一个方法中,这个方法就如同一个工厂
    }

    工厂方法模式是通过子类实现,所以产品和工厂都是抽象的。

    工厂方法的情景是多种产品,多种工厂,达到的效果是可以很方便的增加或删除工厂和产品

  • 相关阅读:
    CentOS7 Install Consul
    CentOS6 Install kafka
    CentOS7 Install Shipyard
    zabbix_sender
    python mail
    CentOS6.8 RPM包安装快速zabbix22
    python与shell通过微信企业号发送消息
    zabbix监控之grafana
    linux查看进程(java)启动时间
    (ubuntu)安装配置jenkins(新版)
  • 原文地址:https://www.cnblogs.com/MalcolmMeng/p/8780244.html
Copyright © 2011-2022 走看看