工厂模式
1. 简单工厂
理解
简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。
不修改代码的话,是无法扩展的。
例子
产品接口
//产品接口
public interface ProductI {
public void productName();
}
产品实体类
public class ProductA implements ProductI {
@Override
public void productName() {
System.out.println("product A");
}
}
public class ProductB implements ProductI {
@Override
public void productName() {
System.out.println("product B");
}
}
工厂类
// 简单工厂模式
public class Factory {
public ProductI create(String productName) {
switch (productName) {
case "A":
return new ProductA();
case "B":
return new ProductB();
default:
return null;
}
}
}
测试类
public class Client {
public static void main(String[] args) {
Factory factory = new Factory();
ProductI productA = factory.create("A");
productA.productName();
//
ProductI productB = factory.create("B");
productB.productName();
}
}
输出
product A
product B
工厂方法
理解
工厂方法是针 对每一种产品提供一个工厂类 。通过不同的工厂实例来创建不同的产品实例。
在同一等级结构中, 支持增加任意产品 。
例子
产品接口和产品实体类和简单工厂都一样。
工厂接口
public interface FactoryI {
// 工厂的目的是为了生产产品
public ProductI create();
}
工厂实体类
public class FactoryA implements FactoryI {
@Override
public ProductI create() {
return new ProductA();
}
}
public class FactoryB implements FactoryI {
@Override
public ProductI create() {
return new ProductB();
}
}
测试类
// 工厂方法模式
public class Client {
public static void main(String[] args) {
FactoryI factoryA = new FactoryA();
ProductI productA = factoryA.create();
productA.productName();
//
FactoryI factoryB = new FactoryB();
ProductI productB = factoryB.create();
productB.productName();
}
}
输出
product A
product B
抽象工厂
理解
抽象工厂是应对产品族概念的。比如说,每个汽车公司可能要同时生产轿车,货车,客车,那么每一个工厂都要有创建轿车,货车和客车的方法。
应对产品族概念而生,增加新的产品线很容易,但是无法增加新的产品。
和工厂方法的区别是,抽象工厂往往有多种方法,可以生产多种产品,即产品簇。
例子
抽象工厂类
// 抽线工厂模式
public interface AbstractFactory {
public ProductAI createProductA();
public ProductBI createProductB();
}
工厂实体类
public class Factory1 implements AbstractFactory {
@Override
public ProductAI createProductA() {
return new ProductA1();
}
@Override
public ProductBI createProductB() {
return new ProductB1();
}
}
public class Factory2 implements AbstractFactory {
@Override
public ProductAI createProductA() {
return new ProductA2();
}
@Override
public ProductBI createProductB() {
return new ProductB2();
}
}
产品接口
//产品接口
public interface ProductBI {
public void productName();
}
//产品接口
public interface ProductAI {
public void productName();
}
产品实体类
public class ProductA1 implements ProductAI {
@Override
public void productName() {
System.out.println("product A1");
}
}
- 浏览: 360637 次
- 性别:
- 来自: 北京
最新评论
-
记忆无泪:
遇到这个问题我用的sed -i 's/\r$//' /mnt/ ...
CentOS6 Shell脚本/bin/bash^M: bad interpreter错误解决方法 -
alenstudent:
Windows 下Nexus搭建Maven私服 -
dandongsoft:
lucene3+IK分词器 改造 lucene2.x+paoding -
duanyanrui:
学习了,支持
Google-Gson -
yscyfy:
这是你直接翻译过来的???
Google-Gson
相关推荐
java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式...
Java设计模式之工厂模式 Java设计模式之工厂模式
java三种工厂模式文档+三个实例,里面有个word文档是学习文档 然后配套有三个项目学习
java设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种...
例题简单的阐述了Java工厂模式的概念,有利于读者更好地了解Java工厂模式
Java 经典设计模式讲解以及项目实战 设计模式简介:主要介绍各种设计模式的概念和运用场景等 设计模式综合运用:主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼 Spring设计模式简介:主要是讲述...
设计模式之工厂模式Java实现和类设计图,包括简单工厂模式、工厂方法模式和抽象工厂模式
java 设计模式 mvc模式 单例模式 代理 工厂 简单工厂
设计模式主要分为三大类: 1.创建型模式:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。 2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 4.行为型模式:...
JAVA 设计模式: 工厂模式 代理模式 迭代模式 责任链模式 源码
Java设计模式之工厂模式实现,供大家一起共同分享学习。
Java设计模式中的工厂模式,MainDemo.java 是项目演示入口
JAVA设计模式之工厂模式.pdf
java设计模式之抽象工厂模式实例,希望对大家有所帮助。
JAVA设计模式之3种工厂模式
1、爪哇语言结构性模式之变压器模式介绍 2、爪哇语言抽象工厂创立性模式介绍 3、工厂方法创立性模式介绍 4、单态创立性模式介绍 5、单态创立性模式介绍 6、观察者模式介绍7、责任链模式 8、设计模式之Observer 9、...
java设计模式之工厂方法模式 学习设计模式已经有一段时间了,但经常还是会很困惑。看书上的代码会发现很多不同的设计模式的代码结构非常相似。比如 Bridge 和 Strategy 。。。 设计模式就是我们设计过程中经常出现的...
工厂模式按照《Java 与模式》中的提法分为三类: 1. 简单工厂模式(Simple Factory) 2. 工厂方法模式(Factory Method) 3. 抽象工厂模式(Abstract Factory) 这三种模式从上到下逐步抽象,并且更具一般性。还有一种...
本系统基于六种设计模式,运用到的设计模式有备忘录模式,简单工厂模式,迭代器模式,状态模式,模版方法模式,单例模式。 具体实现过程、UML类图以及实现效果详见如下项目说明地址: ... 该系统为绘图系统,该系统通过...