- 浏览: 18505 次
- 性别:
- 来自: 西安
最新评论
Simple Factory:
以Fruit为例,以下是实现代码:
Fruit.java
package com.flyingh.iproduct; public interface Fruit { }
Apple.java
package com.flyingh.product; import com.flyingh.iproduct.Fruit; public class Apple implements Fruit { }
Orange.java
package com.flyingh.product; import com.flyingh.iproduct.Fruit; public class Orange implements Fruit { }
Pear.java
package com.flyingh.product; import com.flyingh.iproduct.Fruit; public class Pear implements Fruit { }
FruitFactory.java
package com.flyingh.factory; import com.flyingh.iproduct.Fruit; import com.flyingh.product.Apple; import com.flyingh.product.Orange; import com.flyingh.product.Pear; public class FruitFactory { // public static Fruit getFruitInstance() { // return new Apple(); // } public static Fruit getFruitInstance(String str) { if ("apple".equalsIgnoreCase(str)) { return new Apple(); } else if ("orange".equalsIgnoreCase(str)) { return new Orange(); } else if ("pear".equalsIgnoreCase(str)) { return new Pear(); } else { throw new RuntimeException("参数有误"); } } }
Client.java
package com.flyingh.client; import com.flyingh.factory.FruitFactory; import com.flyingh.iproduct.Fruit; import com.flyingh.product.Apple; import com.flyingh.product.Orange; public class Client { public static void main(String[] args) { Fruit fruit = FruitFactory.getFruitInstance("orange"); System.out.println(fruit instanceof Orange);// true System.out.println(fruit instanceof Apple);// false fruit = FruitFactory.getFruitInstance("banana"); // java.lang.RuntimeException:参数有误 } }
Factory Method:
以Cpu为例,代码如下:
CPU.java
package com.flyingh.icpu; public interface CPU { String info(); }
AMD.java
package com.flyingh.cpu; import com.flyingh.icpu.CPU; public class AMD implements CPU { @Override public String info() { // TODO Auto-generated method stub return "AMD"; } }
Intel.java
package com.flyingh.cpu; import com.flyingh.icpu.CPU; public class Intel implements CPU { @Override public String info() { // TODO Auto-generated method stub return "Intel"; } }
Factory.java
package com.flyingh.ifactory; import com.flyingh.icpu.CPU; public interface Factory { CPU createCPU(); }
AMDFactory.java
package com.flyingh.factory; import com.flyingh.cpu.AMD; import com.flyingh.icpu.CPU; import com.flyingh.ifactory.Factory; public class AMDFactory implements Factory { @Override public CPU createCPU() { // TODO Auto-generated method stub return new AMD(); } }
IntelFactory.java
package com.flyingh.factory; import com.flyingh.cpu.Intel; import com.flyingh.icpu.CPU; import com.flyingh.ifactory.Factory; public class IntelFactory implements Factory { @Override public CPU createCPU() { // TODO Auto-generated method stub return new Intel(); } }
Client.java
package com.flyingh.client; import com.flyingh.factory.AMDFactory; import com.flyingh.factory.IntelFactory; import com.flyingh.icpu.CPU; import com.flyingh.ifactory.Factory; public class Client { public static void main(String[] args) { Factory factory1 = new IntelFactory(); Factory factory2 = new AMDFactory(); CPU intel = factory1.createCPU(); CPU amd = factory2.createCPU(); System.out.println(intel.info());// Intel System.out.println(amd.info());// AMD } }
发表评论
文章已被作者锁定,不允许评论。
-
Interpreter
2011-11-24 21:19 854Interpreter Pattern:其意图是给定一个语言, ... -
Visitor
2011-11-24 17:37 666Visitor Pattern:表示一个作用于某对象结构中的各 ... -
Mediator
2011-11-24 16:22 670Mediator Pattern: 用一 ... -
Prototype
2011-11-24 11:32 615Prototype Pattern:就是通过复制现在已经存在的 ... -
Memento
2011-11-23 21:56 692Memento Pattern:在不破坏封闭的前提下,捕获一个 ... -
Flyweight
2011-11-23 18:38 655享元模式以共享的方式高效地支持大量的细粒度对象. 1).Fl ... -
Builder
2011-11-22 16:38 768Builder Pattern:可以将一个产品的内部表象与产品 ... -
Bridge
2011-11-22 15:05 694桥梁模式的用意是"将抽象化(Abstraction) ... -
Chain Of Responsibility
2011-11-21 23:05 666Chain Of Responsibility Pattern ... -
Abstract Factory
2011-11-21 22:00 648下面以Mac和PC的CPU和RAM为例,代码如下: Cpu. ... -
Proxy
2011-11-18 18:47 665Proxy Pattern:对其他对象提供一种代理以控制对这个 ... -
State
2011-11-18 15:57 686State Pattern:当一个对象的内在状态改变时允许改变 ... -
Composite
2011-11-17 17:09 804Composite Pattern:意图是将对象组合成树形结构 ... -
Iterator
2011-11-16 16:56 896Iterator Pattern:其意图是提供一种方法顺序访问 ... -
Template Method
2011-11-16 11:43 665模板方法模式:在一个方法中定义一个算法的骨架,而将一些实 ... -
Facade
2011-11-15 23:00 604Facade Pattern:为子系统中的各类(或结构与方法) ... -
Adapter
2011-11-15 21:43 636Adapter Pattern:将一个类的接口,转换成客户所期 ... -
Command
2011-11-14 23:06 5791).下面以Boss和Clerk为例: Clerk.java ... -
Decorator
2011-11-12 23:09 577装饰者可以在所委托被装饰者的行为之前与/或之后,加上自己的 ... -
Observer
2011-11-12 21:30 613观 察 者 模 式 定义了对象之间的一对多依赖,这样一来 ...
相关推荐
工厂方法模式是面向对象设计模式中的行为型模式之一,它提供了一种...在提供的文件列表中,“FactoryMethod”可能是包含这个简单示例代码的文件。如果有机会查看这个文件,将能更深入地理解工厂方法模式的实现细节。
今天我们要探讨的是设计模式中的一个经典成员——工厂方法模式(Factory Method Pattern)。工厂方法模式是创建型设计模式的一种,它提供了一种创建对象的最佳方式。 ### 一、什么是工厂方法模式? 工厂方法模式...
### C++设计模式之Factory Method(工厂方法) #### 概述 C++设计模式课件8_Factory Method_工厂方法.pdf是一份详细介绍了C++设计模式中的“工厂方法”模式的专业文档。该文档由极客班与网易云课堂联合出品,旨在...
### Factory Method 工厂方法模式(创建型模式) #### 概述 在软件工程领域,设计模式是一种在特定上下文中解决常见问题的通用方案。Factory Method(工厂方法)模式是GoF(Gang of Four)设计模式之一,属于创建型...
Java设计模式是面向对象编程...在阅读《Chapter1___Java常用设计模式(SingleTon、FactoryMethod、AbstractFactory)》的相关资料时,你可以更深入地学习这些模式的细节,包括适用场景、优缺点以及如何在实际项目中实现。
工厂方法(Factory Method)设计模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂方法模式中,一个类的实例化延迟到了子类,这样做的好处是每个子类可以决定实例化哪一个类。这种类型的设计模式...
1. 抽象工厂(Abstract Factory):这是工厂方法模式的核心接口,它声明了一组用于创建产品的公共方法。抽象工厂通常为抽象类或接口。 2. 具体工厂(Concrete Factory):实现了抽象工厂接口,提供具体的产品实例。...
在给定的"FactoryMethod"压缩包中,我们可以看到一个简单的工厂方法模式的实现。在这个例子中,可能会有如下结构: - `Product`:代表产品接口,例如定义了`produce()`方法。 - `ConcreteProduct1`, `...
例如,`FactoryMethod.zip`可能包含一个`形状`的抽象类(产品接口)和几个具体的形状类(如`圆形`、`正方形`),以及一个`形状工厂`接口和几个具体工厂类(如`圆形工厂`、`正方形工厂`)。工厂类会根据需求返回不同...
Factory Method设计模式C#中的实现例子
"t02FactoryMethod" 指的是工厂方法(Factory Method)设计模式,它是面向对象设计中的一种经典模式。这个模式主要关注于如何创建对象,通过引入一个工厂接口或者抽象类,将对象的创建过程封装起来,使得具体的对象...
工厂方法模式(Factory Method Pattern)是设计模式中的创建型模式之一,主要解决对象创建过程中的复杂性问题。在软件工程中,当一个类不知道它所必须创建的对象的类的时候,它就不会实例化对象,而是使用一个工厂...
C#面向对象设计模式纵横谈(5):Factory Method 工厂方法模式(创建型模式) (Level 300)
它们都是由不同的厂家生产的,这就是工厂方法模式(FactoryMethod)与前面所说的简单工厂模式(SimpleFactory)的差别。 实例: 多文档系统。我已经用C#的源码编程了:请下载Factory Method Patter.rar
**三、Factory Method设计模式的意图** 使用工厂方法模式定义一个用于创建对象的接口,但让子类决定实例化哪个类。这种创建型设计模式允许一个类将实例化推迟到子类,增强了代码的灵活性和可维护性。 **四、通过...
在"FactoryMethodPattern"的压缩包文件中,我们可以预期包含以下内容: - 示例代码:展示了如何在Swift或Objective-C中实现工厂方法模式。可能包含抽象产品接口、具体产品类、抽象工厂接口和具体工厂类的定义,以及...
C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method)
在软件设计模式中,工厂方法(Factory Method)和抽象工厂(Abstract Factory)是两种非常重要的创建型模式。它们主要用于解决对象实例化的问题,提供了一种封装对象创建过程的方法,使得代码更加灵活,易于扩展和...