- 浏览: 203663 次
- 性别:
- 来自: 芜湖
文章分类
- 全部博客 (139)
- 软件 (0)
- Pattern (6)
- CSDN导入 (19)
- Struts (3)
- [网站分类]1.网站首页原创 (27)
- [网站分类]6.转载区 (4)
- Hibernate (10)
- Error (8)
- [网站分类]2.Java新手区 (20)
- Java (8)
- [网站分类]4.其他技术区 (10)
- Web (1)
- C++ (2)
- Algorithm (4)
- Linux (2)
- Skill (1)
- Tech (2)
- Note (2)
- [网站分类]3.非技术区 (1)
- Database (1)
- Winty (7)
- [网站分类]1.网站首页原创Java技术区(对首页文章的要求: 原创、高质量、经过认真思考并精心写作。BlogJava管理团队会对首页的文章进行管理。) (0)
最新评论
-
haohao-xuexi02:
很不错哦。
O'Reilly cos上传组件的使用(1/3) - 上传文件 -
yoin528:
useUnicode=true&charact ...
[原]向MySQL数据库插入Blob数据的问题 -
xiaoqing20:
下载来看看!呵呵
[原]Struts2类型转换 -
xiaoqing20:
[原]Struts2类型转换
[关键字]:java,design pattern,设计模式,《Java与模式》,Factory
[环境]:StarUML5.0 + JDK6
[作者]:Winty (wintys@gmail.com)
UML图:
代码:
/**
*工厂模式测试类
*@version 2009-4-3
*@author Winty(wintys@gmail.com)
*/
package pattern.factory;
public class Factory{
public static void main(String[] args){
Fruit fruit;
FruitGardener fruitGardener;
fruitGardener = new AppleGardener();
fruit = fruitGardener.factory();
fruit.plant();
fruit.harvest();
fruitGardener = new StrawberryGardener();
fruit = fruitGardener.factory();
fruit.plant();
fruit.harvest();
fruitGardener = new GrapeGardener();
fruit = fruitGardener.factory();
fruit.plant();
fruit.harvest();
}
}
/**
*抽象产品
*/
abstract class Fruit{
protected String name;
public abstract void plant();
public abstract void harvest();
}
/**
*具体产品(Apple)
*/
class Apple extends Fruit{
public Apple(){
name = "Apple";
}
@Override
public void plant(){
System.out.println(name + " plant");
}
@Override
public void harvest(){
System.out.println(name + " harvest");
}
}
/**
*具体产品(草莓)
*/
class Strawberry extends Fruit{
public Strawberry(){
name = "Strawberry";
}
@Override
public void plant(){
System.out.println(name + " plant");
}
@Override
public void harvest(){
System.out.println(name + " harvest");
}
}
/**
*具体产品(葡萄)
*/
class Grape extends Fruit{
public Grape(){
name = "Grape";
}
@Override
public void plant(){
System.out.println(name + " plant");
}
@Override
public void harvest(){
System.out.println(name + " harvest");
}
}
/**
*抽象工厂类
*/
abstract class FruitGardener{
public abstract Fruit factory();
}
/**
*具体Apple工厂
*/
class AppleGardener extends FruitGardener{
@Override
public Fruit factory(){
return new Apple();
}
}
/**
*具体草莓工厂
*/
class StrawberryGardener extends FruitGardener{
@Override
public Fruit factory(){
return new Strawberry();
}
}
/**
*具体葡萄工厂
*/
class GrapeGardener extends FruitGardener{
@Override
public Fruit factory(){
return new Grape();
}
}
*工厂模式测试类
*@version 2009-4-3
*@author Winty(wintys@gmail.com)
*/
package pattern.factory;
public class Factory{
public static void main(String[] args){
Fruit fruit;
FruitGardener fruitGardener;
fruitGardener = new AppleGardener();
fruit = fruitGardener.factory();
fruit.plant();
fruit.harvest();
fruitGardener = new StrawberryGardener();
fruit = fruitGardener.factory();
fruit.plant();
fruit.harvest();
fruitGardener = new GrapeGardener();
fruit = fruitGardener.factory();
fruit.plant();
fruit.harvest();
}
}
/**
*抽象产品
*/
abstract class Fruit{
protected String name;
public abstract void plant();
public abstract void harvest();
}
/**
*具体产品(Apple)
*/
class Apple extends Fruit{
public Apple(){
name = "Apple";
}
@Override
public void plant(){
System.out.println(name + " plant");
}
@Override
public void harvest(){
System.out.println(name + " harvest");
}
}
/**
*具体产品(草莓)
*/
class Strawberry extends Fruit{
public Strawberry(){
name = "Strawberry";
}
@Override
public void plant(){
System.out.println(name + " plant");
}
@Override
public void harvest(){
System.out.println(name + " harvest");
}
}
/**
*具体产品(葡萄)
*/
class Grape extends Fruit{
public Grape(){
name = "Grape";
}
@Override
public void plant(){
System.out.println(name + " plant");
}
@Override
public void harvest(){
System.out.println(name + " harvest");
}
}
/**
*抽象工厂类
*/
abstract class FruitGardener{
public abstract Fruit factory();
}
/**
*具体Apple工厂
*/
class AppleGardener extends FruitGardener{
@Override
public Fruit factory(){
return new Apple();
}
}
/**
*具体草莓工厂
*/
class StrawberryGardener extends FruitGardener{
@Override
public Fruit factory(){
return new Strawberry();
}
}
/**
*具体葡萄工厂
*/
class GrapeGardener extends FruitGardener{
@Override
public Fruit factory(){
return new Grape();
}
}
发表评论
-
[原]导出CodeHelp的数据
2009-03-16 17:05 861搬到blogjava总得发点原创的东西吧。 Code ... -
[原]使用Ant实现zip压缩解压功能
2009-03-19 13:17 1723[关键词]:ant,zip,unzip,Apache,压缩,解 ... -
[原]EL函数的使用
2009-04-03 21:29 1122[标题]:EL函数的使用 [时 ... -
[原]对Class.getMethod()的调用未经检查
2009-04-05 15:52 2367[标题]:对Class.getMethod()的调用未经检查 ... -
[原]JNI简单示例
2009-04-05 21:33 1041[标题]:JNI简单示例 [时 ... -
[原]简单工厂模式
2009-04-14 12:26 757[关键字]:java,设计模式,简单工厂,《java与模式》 ... -
[原]抽象工厂模式
2009-04-14 19:25 761[关键字]:java,design pattern,设计模式, ... -
[原]方法返回值为数组的另一种表示方法
2009-04-25 22:28 979[时间]:2009-04-25 今天看到JDK的源代码 ... -
[原]SAX使用示例
2009-04-26 19:18 2055[标题]:[原]SAX使用示例 [时间]:2009-4-25 ... -
[原]责任链模式
2009-05-09 16:47 738[关键字]:java,design pattern,设计模式, ... -
[原]状态模式
2009-05-18 23:03 842[关键字]:java,design pattern,设计模式, ... -
[原]策略模式
2009-05-21 22:21 707[关键字]:java,design pattern,设计模式, ... -
[原]VC实现重启路由器
2009-05-29 23:36 2083[标题]:[原]VC实现重启路 ... -
[原]远程登录Windows Server 2003的当前会话
2009-06-01 11:19 2075[标题]:远程登录Windows Server 2003的当前 ... -
[原]Tomcat crossContext
2009-06-01 12:27 6104[标题]:Tomcat crossContext [时间]:2 ... -
[原]装饰模式1
2009-06-07 22:33 717[关键字]:java,design pattern,设计模式, ... -
[原]装饰模式3-Grep
2009-06-07 22:42 702[关键字]:java,design pattern,设计模式, ... -
[原]合成模式-透明的
2009-06-08 22:23 766[关键字]:java,design pattern,设计模式, ... -
[原]合成模式-安全的
2009-06-08 22:27 842[关键字]:java,design pattern,设计模式, ... -
[原]模板方法模式
2009-06-15 17:05 678[关键字]:java,design pattern,设计模式, ...
相关推荐
MVC模式使得用户界面与数据逻辑分离,单例模式保证关键资源的唯一访问点,代理模式在访问对象前后增加额外的功能,工厂模式将对象创建与使用分离,简单工厂模式为对象创建提供一个简单便捷的接口。通过这些模式,...
这个压缩包中包含的实例源码涵盖了多种设计模式,包括工厂模式、动态代理和责任链模式。让我们深入探讨这些设计模式的核心概念、用途以及它们在实际编程中的应用。 1. 工厂模式:这是最基础的设计模式之一,属于...
在这个压缩包中,我们重点关注两种模式:单例模式和简单工厂模式。 单例模式是一种创建型设计模式,其核心特点是保证一个类只有一个实例,并提供一个全局访问点。在Java中实现单例,通常有懒汉式、饿汉式和双重检查...
《C#实现2048游戏的工厂方法模式解析》 在编程领域,设计模式是解决常见问题的可重用方案,它们代表了在特定上下文中经过时间验证的最佳实践。工厂方法模式是其中的一种,它提供了一种创建对象的抽象方式,使得具体...
NULL 博文链接:https://jacky-dai.iteye.com/blog/2296369
抽象工厂模式是一种高级的设计模式,属于创建型模式,它提供了一种创建对象族的方法,而无需指定其具体的类。在PHP中,抽象工厂模式尤其适用于那些需要创建一系列相关或相互依赖的对象,而又不希望硬编码具体类名的...
抽象工厂模式提供了一组接口,用于创建相关或依赖对象的家族,而无需指定具体类;建造者模式将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示;原型模式通过复制已有对象来创建新对象。 2. **...
1)程序功能:用简单工厂模式实现计算器功能,采用PHP编写。 2)程序详解地址:http://blog.csdn.net/clevercode/article/details/45692995。 3)原创作品,出自"CleverCode的博客",分类为《设计模式之PHP项目应用...
通过本文的介绍,你应该能够理解工厂模式的基本概念,掌握在JavaScript中实现工厂模式的方法,并能够在实际项目中应用这一模式来构建灵活的对象创建机制。 通过本文的介绍,你应该能够理解工厂模式的重要性,掌握在...
**抽象工厂模式**是软件设计模式中的一个关键概念,它属于创建型模式,主要用于提供创建对象的接口,使得客户端能够创建一系列相关或相互依赖的对象,而无需指定它们的具体类。在Java编程中,抽象工厂模式尤其适用于...
***中简单工厂模式与工厂方法模式的论述主要涉及以下知识点: 简单工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在简单工厂模式中,有一个专门负责创建对象的工厂类,根据客户端传入的参数,...
抽象工厂模式 原型模式 建造者模式 单例模式 结构型模式 队列模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式 行为模式(类行为模式) 解释器模式 模板方法模式 行为模式(对象行为模式) 策略模式 ...
工厂方法模式通过子类化对扩展是开放的,但对修改原工厂类是封闭的,这符合开闭原则。抽象工厂模式则适合于提供一系列产品族,且产品的种类变动不频繁,产品之间有较强的依赖关系。 在C++中实现这些工厂模式时,...
1. 简单工厂(Simple Factory):简单工厂是工厂模式三种形态中结构最为简单的。主要有一个静态方法,用来接受参数,并根据参数来决定返回实现同一接口的不同类的实例。 简单工厂的优点是可以动态决定应该实例化哪...
在给定的文件中,我们看到一个名为“原料工厂”的实现,这是简单工厂模式的一个例子,用于创建披萨的各个组成部分。下面我们将详细探讨这个原料工厂以及与之相关的知识点。 **简单工厂模式**: 简单工厂模式是设计...
在工厂模式中,我们创建一个工厂类,该类负责生产特定类型的对象,而不是让客户端直接实例化对象。这有助于隐藏对象创建的复杂性,并允许系统在不影响客户端的情况下更改产品类型。 2. 单例模式:确保一个类只有一...
2. **创建型模式**:如单例模式(Singleton)、工厂模式(Factory)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。这些模式主要用于对象的创建,旨在简化实例化过程,提高...
JavaScript工厂模式是一种设计模式,属于对象创建型模式,它的主要目的是为了抽象对象的创建过程,降低对象实例化过程中与具体类的耦合度。在JavaScript中,由于没有类的概念,工厂模式通常通过函数来实现。下面我们...