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);//披萨实例化的责任移动到一个方法中,这个方法就如同一个工厂
    }

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

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

  • 相关阅读:
    计算机网络基础知识整理
    计算机操作系统知识整理
    各类编程语言的主要用途
    计算机的基本组成知识整理
    对IT行业的看法和对软件工程的理解
    正规文法转换
    语法树评论
    c语言文法定义
    词法分析
    0909我对编译原理的见解
  • 原文地址:https://www.cnblogs.com/MalcolmMeng/p/8780244.html
Copyright © 2011-2022 走看看