`

java设计模式1:simplefactory

阅读更多

PH`Y3AU]7FRXZ6GY{%BP$0S

simplefactory比较简单,即是根据不同的条件,创建不同的产品,这些产品有一个共同的基类,封装了相同的行为,上例中这些水果都有三种功能,并在基类中进行了封装。

相关代码:

package com.javapatterns.simplefactory;

/**
* 水果类,接口
* @author luhx
*/
public interface Fruit
{
/**
* 栽种
*/
void plant();
/**
* 成长
*/
void grow();

/**
* 收割
*/
void harvest();

}

package com.javapatterns.simplefactory;

/**
* 苹果类,继承于Fruit
* @author luhx
*
*/
public class Apple implements Fruit
{
public void plant()
{
System.out.println("Apple has been planted.");
}

public void grow()
{
System.out.println("Apple is growing...");
}

public void harvest()
{
System.out.println("Apple has been harvested.");
}

/**
* 取树龄
* @return :int
* @uml.property name="treeAge"
*/
public int getTreeAge(){ return treeAge; }

/**
* 设树龄
* @param treeAge:int
* @uml.property name="treeAge"
*/
public void setTreeAge(int treeAge){ this.treeAge = treeAge; }

/**
* 树年龄
* @uml.property name="treeAge"
*/
private int treeAge;
}

package com.javapatterns.simplefactory;

/**
* 葡萄类,继承于Fruit
* @author luhx
*
*/
public class Grape implements Fruit
{
public void grow()
{
System.out.println("Grape is growing...");
}

public void harvest()
{
System.out.println("Grape has been harvested.");
}

public void plant()
{
System.out.println("Grape has been planted.");
}

/**
* 判断是否有籽
* @return:boolean
*/
public boolean getSeedless()
{
return seedless;
}

/**
* 设置是否有籽标识
* @param seedless:boolean
* @uml.property name="seedless"
*/
public void setSeedless(boolean seedless)
{
this.seedless = seedless;
}

/**
* 是否有籽
* @uml.property name="seedless"
*/
private boolean seedless;
}

package com.javapatterns.simplefactory;
/**
* 水果园艺工人类,creater
* @author luhx
*
*/
public class FruitGardener
{
public static Fruit factory(String which) throws BadFruitException
{
if (which.equalsIgnoreCase("apple"))
{
return new Apple();
}
else if (which.equalsIgnoreCase("strawberry"))
{
return new Strawberry();
}
else if (which.equalsIgnoreCase("grape"))
{
return new Grape();
}
else
{
throw new BadFruitException("Bad fruit request");
}
}
}

package com.javapatterns.simplefactory;
/**
* 水果园艺工人类,creater
* @author luhx
*
*/
public class FruitGardener
{
public static Fruit factory(String which) throws BadFruitException
{
if (which.equalsIgnoreCase("apple"))
{
return new Apple();
}
else if (which.equalsIgnoreCase("strawberry"))
{
return new Strawberry();
}
else if (which.equalsIgnoreCase("grape"))
{
return new Grape();
}
else
{
throw new BadFruitException("Bad fruit request");
}
}
}

package com.javapatterns.simplefactory;

/**
* 水果异常类
* @author luhx
*
*/
public class BadFruitException extends Exception
{
public BadFruitException(String msg)
{
super(msg);
}
}

W0$[P}~W0@FH)[X]@KP2G0F

总结:简单工厂模式涉及到工厂角色,抽象产品角色以及具体产品角色等三个角色。

1、工厂类(Creator):担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的商业逻辑。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体的Java类实现。
2、抽象产品(Product):担任这个角色的类是由工厂实方法模式所创建的对象的父类,或它们共同拥有的接口。抽象产品角色可以用一个Java接口或者Java抽角类实现。
3、具体产品(Concrete Product):工厂方法模式所创建的任何对象都是这个角色的实例,具体产品角色由一个具体Java类实现。

package com.javapatterns.simplefactory;

public interface Product
{
}

package com.javapatterns.simplefactory;

public class ConcreteProduct implements Product
{
public ConcreteProduct(){}
}

package com.javapatterns.simplefactory;

public class Creator
{
public static Product factory()
{
return new ConcreteProduct();
}

/** @link dependency
* @label Creates*/
/*# ConcreteProduct lnkConcreteProduct; */
}

分享到:
评论

相关推荐

    java 设计模式 Facade外观模式 Simple Factory 简单工厂模式

    总的来说,Facade模式和Simple Factory模式是Java设计模式中的重要组成部分,它们分别解决了简化复杂系统接口和对象创建的问题。学习和运用这些模式,不仅可以提高代码质量,还能使软件更加灵活,适应未来可能的变化...

    设计模式 t01SimpleFactory

    "t01SimpleFactory"指的是简单工厂(Simple Factory)设计模式,它是创建型设计模式之一。 简单工厂模式的核心思想是通过一个公共的工厂类来创建对象,这个工厂类负责实例化客户所需的对象,客户只需要知道具体的...

    java工厂模式SimpleFactory

    总的来说,Java工厂模式SimpleFactory是一种实用的设计模式,能够帮助我们更好地管理对象的创建过程,提高代码的可维护性和可扩展性。通过将对象的创建过程封装在工厂类中,我们可以在不修改客户端代码的情况下,...

    Java设计模式刘伟书本中模拟考试答案

    在《Java设计模式》这本书的模拟试题及其参考答案中,涉及了多条设计模式的知识点,以及它们的应用场景和实现方法。现在将这些知识点详细地解释如下: 1. 开闭原则(Open-Closed Principle, OCP): 开闭原则是面向...

    JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)

    **简单工厂模式**是软件设计模式中的一种,属于创建型模式。在Java编程中,它是一种用于创建对象的简便方法,将对象的实例化过程封装到一个单独的工厂类中,使得客户端代码无需直接调用具体类的构造函数,而是通过...

    Java的23种设计模式百度云下载链接.rar

    Java中的`AbstractFactory`和`SimpleFactory`都是工厂模式的例子。 3. **抽象工厂模式**:提供一个创建一系列相关或相互依赖对象的接口,无需指定其具体类。在Java中,例如JDBC的DriverManager类。 4. **建造者...

    常见的十种设计模式Java工程文件

    本资源包含了十个经典的Java实现设计模式,这对于理解和掌握面向对象系统分析与设计有着极大的帮助。以下是这十个设计模式的详细解释: 1. **Decorator模式**:Decorator模式允许动态地给一个对象添加一些新的行为...

    《Java设计模式》模拟试题参考答案及评分标准-刘伟(20180723).pdf

    根据提供的文档信息,我们可以从这份《Java设计模式》模拟试题参考答案及评分标准中提炼出以下关键知识点: ### 一、基础知识与概念 #### 1. 设计模式基础概念 - **里氏替换原则**(Liskov Substitution Principle...

    java的设计模式 《设计模式-java语言中的应用.pdf》

    以上就是Java设计模式的一些基本概念和应用,理解并熟练掌握这些模式对于编写高质量、易于维护的Java代码至关重要。通过阅读《设计模式——Java语言中的应用》这本书,你可以更深入地学习和掌握这些模式的细节及其在...

    java与设计模式ppt

    在Java中,设计模式尤其重要,因为它们帮助开发者遵循面向对象原则,如单一职责原则、开闭原则等。本篇主要介绍三种创建型设计模式:工厂模式、工厂方法模式和建造者模式。 1. **工厂模式**: 工厂模式是一种简单...

    java 设计模式

    Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可维护性、可扩展性和可复用性。在这个压缩包中,提到了三种主要的设计模式:Bridge模式、Command模式和FactoryMethod...

    专题资料(2021-2022年)Java设计模式之工厂模式Factory.doc

    【Java设计模式之工厂模式Factory】是面向对象编程领域中常用的设计模式,它提供了一种创建对象的最佳方式。工厂模式的主要思想是将对象的创建过程封装起来,使得客户端(使用对象的代码)无需关心对象的具体创建...

    Java设计模式之工厂模式(Factory)

    ### Java设计模式之工厂模式详解 #### 一、引言 设计模式是在软件设计过程中针对常见问题而提出的标准化解决方案。其中,“工厂模式”是面向对象编程中最常用的模式之一,主要目的是封装实例化过程,使代码更加...

    java与设计模式--通俗易懂的介绍

    Java 与设计模式是软件开发中的重要主题,它们旨在提高代码的可维护性、灵活性和重用性。设计模式是对在软件设计中经常出现的问题及其解决方案的一种通用、可复用的描述。本篇将通俗易懂地介绍几种常见的设计模式,...

    JAVA常用设计模式.ppt

    在Java中,设计模式尤其重要,因为它们可以帮助我们编写出更灵活、可维护和易于扩展的代码。以下是对给定文件中提到的几种设计模式的详细解释: 1. **简单工厂模式(Simple Factory)**: - 简单工厂模式是一种...

    JAVA设计模式

    ### JAVA设计模式详解 #### 工厂模式概览 工厂模式是软件开发中常用的设计模式之一,主要用于封装对象的创建过程。它可以帮助我们隐藏复杂的创建逻辑,并使代码更易于维护和扩展。工厂模式的主要目的是将对象的...

    JAVA设计模式讲解

    在这个名为“JAVA设计模式讲解”的PPT中,主要介绍了三种创建型设计模式:工厂模式、工厂方法模式和建造者模式。这些模式都是为了在Java中更好地实现对象的创建,提高代码的可维护性和可扩展性。 首先,我们来看...

Global site tag (gtag.js) - Google Analytics