学习笔记之简单工厂设计模式

工厂设计模式:根据一定的逻辑来负责对象的生产。

简单工厂设计模式:又称为静态工厂方法模式,由一个工厂类,根据传人的参数决定生产哪一种对象

三种角色:工厂角色,抽象产品角色,具体产品角色

故事:水果农场生产水果(苹果和香蕉),一个顾客直接去农场买水果

首先抽象角色:

水果接口

public interface IFruit {
    void growth();
}

具体产品角色:苹果,香蕉

public class Apple implements IFruit {

    public void growth() {
        System.out.println("变红了");
    }

}
public class Banana implements IFruit {

    public void growth() {
        System.out.println("变黄了");
    }

}

工厂角色:

public class FruitFarm {
    public static IFruit pickUp (String fruitName) throws NoSuchFruitException{
        if("Apple".equals(fruitName)){
            return new Apple();
        }else if("Banana".equals(fruitName)){
            return new Banana();
        }else {
            throw new NoSuchFruitException("没有您要的"+fruitName);//如果没买到就抛出自定义异常
        }
    }
}

然后顾客去农场买水果:

public class Customer {
    public void buy(){
        try {
            IFruit fruit = FruitFarm.pickUp("Banana");
            fruit.growth();
        } catch (NoSuchFruitException e) {
            System.out.println("不吃了,算了"+e);
        }
    }

    public static void main(String[] args) {
        Customer customer = new Customer();
        customer.buy();
    }
}

控制台打印:

变黄了

时间: 2024-10-13 15:10:40

学习笔记之简单工厂设计模式的相关文章

Java学习笔记——对比简单工厂模式和策略模式

简单工厂模式:客户端传一个条件进工厂类,工厂类根据条件创建相应的产品类对象,客户端使用该产品类对象.工厂类依赖产品类 策略模式:客户端创建一个Context类对象,并通过传入参数使用该对象.Context类中聚合了产品类,没有依赖关系 策略模式比简单工厂模式更优雅.

易学设计模式看书笔记(2) - 简单工厂模式

本文摘自易学设计模式一书 一.简单工厂模式 1.动物管理系统的例子 public interface Animal{ public void eat(); } public class Tiger implements Animal { public void eat(){ sysout.out.println("老虎会吃"); }; public void run(){ sysout.out.println("老虎会跑"); }; } public class D

.Net学习 第2季10 简单工厂设计模式

.Net 视频学习第2季 简单工厂设计模式 设计模式就是解决一类问题的设计方案,有人总结了23种常见的设计模式,简单工厂是其中一种. 一个简单的工厂会生产不同的商品,例如笔记本工厂会生产不同品牌的笔记本,而客户需要哪一款需要通过询问客户才能得知.简单工厂设计模式的核心就是,尽可能屏蔽各个品牌笔记本的差异,消除其带来的代码冗余, 返回一个笔记本的父类,里面装的是子类对象,通过抽象类来实现多态. 例如,笔记本工厂生产4种品牌的笔记本A,B,C,D,如果不用笔记本父类,在main方法中先询问客户需要哪

大话设计模式读书笔记1——简单工厂模式

最近几日,重温了一下<大话设计模式>这本书,当时读的仓促,有很多没有注意的地方,现在仔细翻看起来,发现这值得细细品味的一本书!! 好东西就要记下来!!! 第一章笔记:从一个简单的计算器程序来看简单工厂模式. 变化的地方就要封装,用一个单独的类来做创造实例的过程这就是工厂. UML图: /// <summary> /// 运算类 /// </summary> public class Operation { public double Number1 { get; set

接口和简单工厂设计模式

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. 接口: 接口就是纯抽象类的演变,实现接口的类都必须实现接口的的方法.接口里全部都是方法的声明,没有方法的实现. 接口里的方法都是public修饰的,就算不写public关键字,也是默认public的,里面的申请的属性 全部都是public 静态常量,接口里没有构造器,静态块和实例块. 例如: 在c这种面向对象的编程语言中也有抽象类,但是要求的不严格,c要求的

node.js在windows下的学习笔记(2)---简单熟悉一些命令

1.打开如下的安装 2.输入node -v,显示node的版本号 3.输入node --help.显示帮助命令 4.自己用一个文本编辑器编写一下代码,保存为text.js,然后在控制台输入node.exe  text.js的路径(直接把这个js文件拖到控制台自动显示路径),按下回车键 var http = require("http"); http.createServer(function(request, response) { response.writeHead(200, {&

简单工厂设计模式

说起设计模式,不得不从最简单的简单工厂设计模式开始说起. 简单工厂模式:定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常具有共同的父类.因为简单工厂模式中用于创建的方法是静态的,因此简单工厂模式又被称为静态工厂方法(Static Factory Method)模式,属于类创建型模式. 首先我们先看看下面这个类图: 在这个类图中,我们可以发现,静态工厂一共有三个对象是不可缺少的 1公共父类(Fruit接口) 2具体的产品类(Apple, Banana) 3静态工厂类(Simp

加壳学习笔记(三)-简单的脱壳思路&amp;调试思路

首先一些windows的常用API: GetWindowTextA:以ASCII的形式的输入框 GetWindowTextW:以Unicaode宽字符的输入框 GetDlgItemTextA:以ASCII的形式的输入框 GetDlgItemTextW:以Unicaode宽字符的输入框 这些函数在使用的时候会有些参数提前入栈,如这函数要求的参数是字符串数目.还有大小写啦之类的东西,这些东西是要在调用该函数之前入栈,也就是依次push,就是说一般前面几个push接着一个call,那前面的push可能

Node.js学习笔记(3) - 简单的curd

这个算是不算完结的完结吧,前段时间也是看了好久的Node相关的东西,总想着去整理一下,可是当时也没有时间: 现在看来在整理的话,就有些混乱,自己也懒了,就没在整理,只是简单的记录一下 一.demo的简单介绍 这次demo,只涉及到简单的curd操作,用到的数据库是mongo,所以要安装mongo数据库,数据库连接驱动是mongoose: 当然关于mongo的驱动有很多,比如mongous mongoskin等:(详见http://cnodejs.org/topic/4f4ca8e0940ce2e