简单工厂的实质是将消费类对具体产品类的依赖,转换成对产品接口的依赖,而其核心是在工厂中决定提供给消费类的具体产品是什么,将使用具体产品的逻辑从消费类中集中转移到工厂,简化消费类的开发。
非常简单的Demo
package pattern;
public class SimpleFactoryDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Comsumer comsumer=new Comsumer(Factory.getProduct());
comsumer.doConsumerJob();
}
}
//共同的接口或抽象父类是产品必须实现的
interface IProduct {
void printIdentity();
}
class ProductA implements IProduct {
@Override
public void printIdentity() {
// TODO Auto-generated method stub
System.out.println("I'm A");
}
}
class ProductB implements IProduct {
@Override
public void printIdentity() {
// TODO Auto-generated method stub
System.out.println("I'm B");
}
}
class Comsumer {
// 消费类只需要使用产品,而不需要关心产品的生成和具体行为
private IProduct product;
public Comsumer(IProduct product) {
this.product = product;
}
public void setProduct(IProduct product) {
this.product = product;
}
public void doConsumerJob() {
this.product.printIdentity();
}
}
class Factory {
//工厂类负责决定创建那个产品,可以加入判断逻辑
public static IProduct getProduct() {
//这是一个非常简单的判断逻辑,决定生产A还是B
int i = (int) (Math.random() * 20);
if (i % 2 == 0)
return new ProductA();
else
return new ProductB();
}
}
其缺点在于工厂与产品类耦合非常紧密,而且判断逻辑在产品增加之后必须修改工厂类的代码。
分享到:
相关推荐
这个是http://blog.csdn.net/dawanganban/article/details/9875873博客中java设计模式的源代码。下载前请先看《设计模式——简单工厂》一文。
经典的设计模式————简单工厂模式,里面有实验文档和实验源代码还有课件助于你的学习
NULL 博文链接:https://maidoudao.iteye.com/blog/1328618
设计模式C#描述之——简单工厂模式,让你学习C#的一种设计模式
这个是http://blog.csdn.net/dawanganban/article/details/9884681博客中java设计模式的源代码。下载前请先看《设计模式——工厂模式在开发中的应用》一文。
本文实例讲述了Python设计模式之简单工厂模式。分享给大家供大家参考,具体如下: 简单工厂模式(Simple Factory Pattern):是通过专门定义一个类...设计模式——简单工厂模式 简单工厂模式(Simple Factory Pattern):是通
简单工厂模式 工厂方法模式 抽象工厂模式 面向对象设计的基本原则: OCP(开闭原则,Open-Closed Principle):一个软件的实体应当对扩展开放,对修改关闭。 DIP(依赖倒转原则,Dependence Inversion Principle):...
此 时工厂类不再负责所有产品的创建,而只是给出具体工厂必须实现的接口,这样工厂方法模式就可以允许 系统不修改工厂类逻辑的情况下来添加新产品,这样也就克服了简单工厂模式中缺点。下面看下工厂模式 的具体实现...
设计模式课程资料——简单工厂模式,使用Java实现,在eclipse进行编译
设计模式是为了解决一些出现的问题设计的解决方案。是长时间经验的总结,是根据不同问题从而提出并且实践出来的解决办法。使用不同的设计模式可以解决不同的问题。 设计模式可以分为三种大类别:分别是创建型模式、...
完成了,但感觉这也没啥特别的,程序界面黑布隆冬的,内部结构也是最最平常的面向对象,于是我应用了《大话设计模式》这本书中的第一个模式——简单工厂模式,看上去还不错。界面的话,也就是输出的语句变了,system...
之前讲到了C++设计模式——简单工厂模式,由于简单工厂模式的局限性,比如:工厂现在能生产ProductA、ProductB和ProductC三种产品了,此时,需要增加生产ProductD产品;那么,首先是不是需要在产品枚举类型中添加新...
C#工厂设计模式简单实例——计算器 public class Factory { //创建一个静态方法 public static Operation CreateOper(int a, int b, string oper) { //创建一个Operation对象 Operation op = null; switch ...
先来看看,简单工厂模式——也叫静态工厂模式,这里举个例子:你要去买一台手机,你不用关心手机是怎么生产出来的,里面的零件具体又是怎么制造的,这些通通都交给工厂去处理,你尽管去买手机就好了。 简单工厂模式...
Java设计模式,目录:前言,UML建模技术,深入浅出UML类图,从招式与内功谈起——设计模式概述,面向对象设计原则,工厂三兄弟之简单工厂模式,工厂三兄弟之工厂方法模式,工厂三兄弟之抽象工厂模式,确保对象的唯一...
C++设计模式原理与实战视频课 1-1 课程介绍 1-2 导论UML和设计模式导论 2-1 简单工厂方法的定义场景与实现-针对接口编程的设计思想剖析 2-2 简单工厂实用工程技术:C++对象动态创建技术与配置化开发 2-3 单例模式的...
1.1什么是设计模式 2 1.2设计模式的作用 3 1.3GRASP模式的分类 4 1.4GoF设计模式的分类 4 1.5模式的学习阶段 6 第2章负责任地设计对象——GRASP 9 2.1InformationExpert(信息专家) 11 2.2Creator(创造者)...
1.1什么是设计模式 2 1.2设计模式的作用 3 1.3GRASP模式的分类 4 1.4GoF设计模式的分类 4 1.5模式的学习阶段 6 第2章负责任地设计对象——GRASP 9 2.1InformationExpert(信息专家) 11 2.2Creator(创造者)...
设计模式入门1——简单工厂模式(AudiFactory) http://blog.csdn.net/lynch0571/article/details/22925771
本文实例讲述了Python设计...设计模式——工厂方法模式 工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延时到其子类. 工厂方法模式克服了简单工