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

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

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

  • 相关阅读:
    Android开发使用Glide获取图片背景色淡绿色解决办法
    Android 获取 View 宽高的常用正确方式,避免为零
    Android之自定义View来接收输入法输入的内容
    FileProvider使用详解(拍照、安装APP、共享文件)
    简明 homebrew
    更优雅地使用命令行
    一篇长文说 git 基础
    chrome 浏览器的使用技巧
    前端学命令行
    cocos 碰撞系统
  • 原文地址:https://www.cnblogs.com/MalcolmMeng/p/8780244.html
Copyright © 2011-2022 走看看