`

易学设计模式七 简单工厂(Simple Factory)

阅读更多
简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式,是由一个工厂对象决定创建出哪一种产品类的实例。

本例子一共有七个类,Fruit是抽象类,Apple,Grape,Strawberry是继承了Fruit的具体类,FruitGardener是提供工厂方法(factory)的类,BadFruitException是异常类,Client是测试类。

抽象类 或者 接口
public abstract class Fruit {
	
	public abstract void plant(); //种植
	
	public abstract void grow();  //生长
	
	public abstract void harvest();//收获
	
	public void log(String msg) {
		System.out.println(msg);
	}
}

具体类 苹果
public class Apple extends Fruit {
	
	private int treeAge;

	@Override
	public void grow() {
		log("Apple is growing");
	}

	@Override
	public void harvest() {
		log("Apple has been havested");
	}

	@Override
	public void plant() {
		log("Apple has been planted");
	}

	public int getTreeAge() {
		return treeAge;
	}

	public void setTreeAge(int treeAge) {
		this.treeAge = treeAge;
	}
}

具体类 葡萄
public class Grape extends Fruit {
	
	private boolean seedless;

	@Override
	public void grow() {
		log("Grape is growing");
	}

	@Override
	public void harvest() {
		log("Grape has been harvested");
	}

	@Override
	public void plant() {
		log("Grape has been planted");
	}

	public boolean isSeedless() {
		return seedless;
	}

	public void setSeedless(boolean seedless) {
		this.seedless = seedless;
	}

}

具体类 草莓
public class Strawberry extends Fruit {

	@Override
	public void grow() {
		log("Strawberry is growing");
	}

	@Override
	public void harvest() {
		log("Strawberry has been harvested");
	}

	@Override
	public void plant() {
		log("Strawberry has been planted");
	}
}


园丁来了
public class FruitGardener {
	
	public static Fruit factory(String which) throws BadFruitException {
		if(which.equalsIgnoreCase("apple")) {
			return new Apple();
		} else if(which.equalsIgnoreCase("Grape")) {
			return new Grape();
		} else if(which.equalsIgnoreCase("Strawberry")) {
			return new Strawberry();
		} else {
			throw new BadFruitException("Bad fruit request");
		}
	}
}


异常类
public class BadFruitException extends Exception {
	public BadFruitException(String msg) {
		super(msg);
	}
}


测试类
public class Client {
	public static void main(String[] args) throws BadFruitException {
		Fruit apple = FruitGardener.factory("apple");
		apple.plant();
		apple.grow();
		apple.harvest();
		Fruit strawberry = FruitGardener.factory("strawberry");
		strawberry.plant();
	}
}


输出结果
Apple has been planted
Apple is growing
Apple has been havested
Strawberry has been planted
分享到:
评论

相关推荐

    易学设计模式

    《易学设计模式》这本书是面向软件开发人员的一本实用指南,旨在帮助读者轻松掌握设计模式这一核心的软件工程概念。设计模式是经过时间和实践验证的解决方案,它们针对在软件设计过程中经常遇到的问题提供了一套标准...

    易学设计模式源码光盘

    1. **创建型模式**:这类模式关注对象的创建过程,如单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。它们提供了一种...

    [源代码] 《易学 设计模式》 随书源代码

    第03章 术业有专攻:简单工厂模式 (SimpleFactory) 第04章 精益求精:工厂方法模式 (FactoryMethod) 第05章 再接再厉:抽象工厂模式 (AbstractFactory) 第06章 孜孜不倦:创建者模式 (Builder) 第07章 照猫画虎:...

    易学_设计模式_郭志学

    创建型模式涉及到对象的实例化过程,如单例模式、工厂方法模式、抽象工厂模式等;结构型模式关注如何组合对象和类以形成更大的结构,如适配器模式、装饰器模式、代理模式等;行为型模式主要关注对象之间的职责分配和...

    一个Java书籍《易学设计模式》全部源码.rar

    《Java易学设计模式》全书的随书源码,每一个章节一个压缩包,分别为:工厂模式、命令模式、组合模式、模板方法模式、工厂方法模式例子、状态模式例子、迭代器模式、解释器模式、享元模式、桥模式、装饰模式、代理...

    《易学设计模式》源码

    《易学设计模式》源码是一份珍贵的学习资源,它基于JAVA语言,为读者提供了书中讲解的各种设计模式的实际实现。设计模式是软件工程中的重要概念,它们是解决常见问题的可复用解决方案,有助于提高代码的可读性、可...

    设计模式例子文档,简单易学

    1. 创建型模式:这类模式主要关注对象的创建过程,例如单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。它们提供了一种...

    java-易学设计模式

    1. 创建型模式:这类模式主要关注对象的创建过程,如单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。单例模式确保一个...

    Java《易学设计模式》随书源码.rar

    Java《易学设计模式》随书源代码,书中介绍了多种JAva模式的方法和使用,比如简单工厂模式、工厂方法模式例子、状态模式例子、迭代器模式、解释器模式、命令模式、模板方法模式、享元模式、桥模式、代理模式、适配器...

    Java《易学设计模式》全书源代码

    摘要:Java源码,书籍源码,随书源码,设计模式,Java电子书 运行环境:Java/Eclipse

    介绍设计模式的代码

    创建型模式涉及对象的创建,如单例(Singleton)、工厂方法(Factory Method)和建造者(Builder)。结构型模式关注如何将类和对象组合成更大的结构,如适配器(Adapter)、装饰器(Decorator)和代理(Proxy)。...

    avascript设计模式.pdf

    ### JavaScript 设计模式知识点梳理 #### 1. JavaScript语言概述 JavaScript是目前应用最广泛的编程语言之一,几乎所有的现代浏览器都内置了解释器。它在我们的日常生活中扮演着重要角色,支持着各种网站的界面和...

    head first 设计模式(中文版) part3 总共三部分

    资源比较大,只好分来传输,否则传不上去。设计模式中的经典书籍,强烈建议看这本书来学习设计模式。gof的设计模式太抽象了,这本书非常易学。

    精通python设计模式

    本书涵盖了多种经典的设计模式,如单例模式、工厂模式、观察者模式、装饰器模式、策略模式、代理模式等。单例模式确保一个类只有一个实例,常用于配置管理或线程控制;工厂模式提供了一种创建对象的最佳方式,避免了...

    boaPHP是一款灵活易用的配置式PHP框架,MVC设计模式,完全面向对象,易学易用、便于快速开发

    boaPHP是一款免费开源、灵活易用的配置式PHP框架,MVC设计模式,完全面向对象,易学易用、便于快速开发

    Python常用设计模式源码

    Python作为一门易读、易学的编程语言,也广泛应用了各种设计模式。本资源“Python常用设计模式源码”包含了一些在Python编程中常见的设计模式实现。 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。...

    Java设计模式(经典版)

    该文档通过通俗易懂的描述外加代码实现的方式来讲述java的23中设计模式,简单易学。

Global site tag (gtag.js) - Google Analytics