昨天看了一下设计模式,复习了一下简单工厂模式,做个笔记,浅淡一下我对简单工厂模式的理解。书上使用的是C#,因为我所学的是Java,所以本人就用Java实现了一遍。如果有讲的不对的地方,希望能够指出来。简单工厂设计模式可以简单地理解为,你拿着一个空口袋去水果店买水果,你把空袋子给水果店老板,然后对老板讲我需要一袋子的柚子,十分钟以后。老板递给你一袋子柚子。你不需要知道他们是怎么区分柚子和橘子,又是怎么把柚子装进袋子的。你只需要知道你去了水果店,告诉他你需要一袋柚子。

  代码可以简单理解为,水果店,水果和柚子三部分。如果不谈用户交互界面的话,能和你直接接触的是水果店,下面这段代码可以理解为水果店,用来创造水果的。你可以告诉他你需要什么样的水果,他会返回你一袋水果。

public class FruitsFactory {

    public static Fruit createFruit(String name){
Fruit fruit = null;
switch(name){
case "柚子":
fruit = new Grapefruit();
break;
case "橘子":
fruit = new Tangerine();
break;
}
return fruit;
}
}

下面这个类是一个抽象类,可以理解为水果的总称,水果店里面的所有的水果的混合。

public abstract class Fruit {
protected double weight;
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
public abstract void getResult();
}

下面就是具体的水果,抽象类的具体实现。

public class Grapefruit extends Fruit {

    private double price=5.5;
@Override
public void getResult() {
System.out.println("一袋柚子的价钱是:"+(weight*price));
} }
public class Tangerine extends Fruit {

    private double price=3.5;

    public void getResult() {
System.out.println("一袋橘子的价钱是:"+(weight*price));
}
}

  简单工厂模式可以分为这样几部分,他最大的好处可以理解为,如果水果店里新进柠檬,你只需要新建一个柠檬类,然后在水果店的switch里面增加分支就够了,不用去修改其他代码。是不是感觉代码之间的关联度少了很多?这样才能更利于代码的后期维护。

Java实现简单工厂模式的更多相关文章

  1. java 之 简单工厂模式(大话设计模式)

    以前只是看设计模式,每次看完都去理解一次,并没有手动去写代码,所以理解的还不是很深刻,最近查看框架源码,发现很多地方用到的都是设计模式,因为对设计模式理解的不够深刻,所以源码查看进度很慢!现在决定来温 ...

  2. Java反射+简单工厂模式总结

    除了 new 之外的创建对象的方法 通过 new 创建对象,会使得程序面向实现编程,先举个例子,某个果园里现在有两种水果,一种是苹果,一种是香蕉,有客户想采摘园子里的水果,要求用get()方法表示即可 ...

  3. Java设计模式 -- 简单工厂模式(SimpleFactory)

    一.什么是简单工厂模式 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式.通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 二.模式中包含的角色及其职责 1.工厂(C ...

  4. 设计模式(java)--简单工厂模式之女娲造人.水果农场

    女娲抟土造人 话说:“天地开辟,未有人民,女娲抟土为人.”女娲需要用土造出一个个的人,但在女娲造出人之前,人的概念只存在于女娲的思想里面. 女娲造人,这就是简单工厂模式的应用.  首先,在这个造人的思 ...

  5. Java设计模式-简单工厂模式(Static Factory Method)

    简单工厂模式(Static Factory Method) 简单工厂模式是类的创建模式,又叫静态工厂方法(Static Factory Method)模式.简单工厂模式是由一个工厂对象决定创建出哪一种 ...

  6. java的简单工厂模式

    目录 代码讲解 UML图解简单工厂 优点 缺点: 改进: 代码讲解 产品功能接口: /** * 定义接口,抽象出产品都具有的功能 */ interface Produce { void method( ...

  7. java设计模式--简单工厂模式

     简单工厂设计模式 工厂模式就是专门负责将大量有共同接口的类实例化,而且不必事先知道每次是要实例化哪一个类的模式.它定义一个用于创建对象的接口,由子类决定实例化哪一个类. 核心知识点如下: (1) 大 ...

  8. java之简单工厂模式详解

    设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于 ...

  9. java 创建简单工厂模式

    1.抽象类 package com.zpark.service; /** * 定义一个环境接口,所有省治理环境的方式都实现这个接口,并重写治理环境的方法 * @author tong * */ pub ...

随机推荐

  1. php银联网页支付实现方法

         本文实例讲述了php银联网页支付实现方法.分享给大家供大家参考.具体分析如下: 这里介绍的银联WAP支付功能,仅限消费功能. 1. PHP代码如下: 复制代码代码如下: <?phpna ...

  2. CCS模块库文件的生成与使用

    在一个大的项目中,为了便于管理,有时需要将一个模块封装为库文件,并可以在项目中使用. 图表 1 项目 步骤如下: 1.右键-->new-->CCS Project 图表 2 新建ccs p ...

  3. Java中的比较总结

    Java中的比较问题是一个很基础又很容易混淆的问题.今天就几个容易出错的点作一个比较详细的归纳与整理,希望对大家的学习与面试有帮助. 一.==与equals()的区别 首先,我们需要知道==与equa ...

  4. Android 7.1 屏幕旋转流程分析

    Android 7.1   屏幕旋转流程分析 一.概述 Android屏幕的旋转在framework主要涉及到三个类,结构如图 PhoneWindowManager:为屏幕的横竖屏转换的管理类. Wi ...

  5. 分享一波eclipse常用快捷键

    Eclipse快捷键 一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合.通过这些组合可以更加容易的浏览源代码,使得整体的开发效率和质量得到提升. 1. ctrl+shift ...

  6. Excel大写和小写转换函数

    Excel中的大写和小写转换函数 (1).转换为所有小写字母:lower函数 (2).转换为所有大写字母:upper函数 (3).转换为首字母大写,其余小写字母:proper函数 三种函数的使用方式. ...

  7. 谈谈PBOC3.0中使用的国密SM2算法

    转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/39780825 作者:小马 一 知识准备 SM2是国密局推出的一种他们自己说具有自主 ...

  8. 初识homebrew

    homebrew是MAC上的一个包管理工具,用于软件安装,非常方便. homebrew安装: 命令行执行: ruby -e "$(curl -fsSL https://raw.githubu ...

  9. 个人作业2:APP案例分析

    产品 产品名 网易云音乐 选择原因 除社交软件和浏览器以外,在手机里存在最久的也是使用次数最多的APP就是它了.不管换多少次手机和电脑,它始终在我的装机必备名单上. 调研与评测 第一次上手体验 第一次 ...

  10. .net 裁剪图片(不压缩)

    命名空间: using System.Drawing; using System.Drawing.Imaging; /// <summary> /// 生成图片缩略文件 /// </ ...