JAVA中抽象工厂模式
来源:互联网 发布:mac如何文档文件管理 编辑:程序博客网 时间:2024/05/22 06:46
一、什么是抽象工厂模式
抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的。抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象。
二、产品族和产品等级结构
看图片
二、模式中包含的角色及其职责
1.抽象工厂(Creator)角色 (FruitFactory.java) 抽象工厂模式的核心,包含对多个产品结构的声明,任何工厂类都必须实现这个接口。
2.具体工厂( Concrete Creator)角色(WenshiFruitFactory.java, SouthFruitFactory.java, NorthFruitFactory.java) 具体工厂类是抽象工厂的一个实现,负责实例化某个产品族中的产品对象。
3.抽象(Product)角色 (Fruit.java) 抽象模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
4.具体产品(Concrete Product)角色(NorthApple.java, NorthBanana.java, WenshiBanana.java等等) 抽象模式所创建的具体实例对象
总结:抽象工厂中方法对应产品结构,具体工厂对应产品族。
Fruit.java
Apple.java
SouthApple.java
NorthApple.java
WenshiApple.java
Banana.java
NorthBanana.java
SouthBanana.java
WenshiBanana.java
FruitFactory.java
NorthFruitFactory.java
SouthFruitFactory.java
WenshiFruitFactory.java
MainClass.java
抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的。抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象。
二、产品族和产品等级结构
看图片
二、模式中包含的角色及其职责
1.抽象工厂(Creator)角色 (FruitFactory.java) 抽象工厂模式的核心,包含对多个产品结构的声明,任何工厂类都必须实现这个接口。
2.具体工厂( Concrete Creator)角色(WenshiFruitFactory.java, SouthFruitFactory.java, NorthFruitFactory.java) 具体工厂类是抽象工厂的一个实现,负责实例化某个产品族中的产品对象。
3.抽象(Product)角色 (Fruit.java) 抽象模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
4.具体产品(Concrete Product)角色(NorthApple.java, NorthBanana.java, WenshiBanana.java等等) 抽象模式所创建的具体实例对象
总结:抽象工厂中方法对应产品结构,具体工厂对应产品族。
Fruit.java
public interface Fruit { public void get(); }
Apple.java
public abstract class Apple implements Fruit{ public abstract void get(); }
SouthApple.java
public class SouthApple extends Apple { @Override public void get() { System.out.println("采集南方苹果"); } }
NorthApple.java
public class NorthApple extends Apple { @Override public void get() { System.out.println("采集北方苹果"); } }
WenshiApple.java
public class WenshiApple extends Apple { @Override public void get() { System.out.println("采集温室苹果"); } }
Banana.java
public abstract class Banana implements Fruit{ public abstract void get(); }
NorthBanana.java
public class NorthBanana extends Banana { @Override public void get() { System.out.println("采集北方香蕉"); } }
SouthBanana.java
public class SouthBanana extends Banana { @Override public void get() { System.out.println("采集南方香蕉"); } }
WenshiBanana.java
public class WenshiBanana extends Banana { @Override public void get() { System.out.println("采集温室香蕉"); } }
FruitFactory.java
public interface FruitFactory { //实例化Apple public Fruit getApple(); //实例化Banana public Fruit getBanana(); }
NorthFruitFactory.java
public class NorthFruitFactory implements FruitFactory { public Fruit getApple() { return new NorthApple(); } public Fruit getBanana() { return new NorthBanana(); } }
SouthFruitFactory.java
public class SouthFruitFactory implements FruitFactory { public Fruit getApple() { return new SouthApple(); } public Fruit getBanana() { return new SouthBanana(); } }
WenshiFruitFactory.java
public class WenshiFruitFactory implements FruitFactory { public Fruit getApple() { return new WenshiApple(); } public Fruit getBanana() { return new WenshiBanana(); } }
MainClass.java
public class MainClass { public static void main(String[] args) { FruitFactory ff = new NorthFruitFactory(); Fruit apple = ff.getApple(); apple.get(); Fruit banana = ff.getBanana(); banana.get(); FruitFactory ff2= new SouthFruitFactory(); Fruit apple2 = ff2.getApple(); apple2.get(); Fruit banana2 = ff2.getBanana(); banana2.get(); FruitFactory ff3 = new WenshiFruitFactory(); Fruit apple3 = ff3.getApple(); apple3.get(); Fruit banana3 = ff3.getBanana(); banana3.get(); } }
- JAVA中抽象工厂模式
- java抽象工厂模式
- java抽象工厂模式
- java 抽象工厂模式
- Java抽象工厂模式
- java 抽象工厂模式
- Java 抽象工厂模式
- java 抽象工厂模式
- Java 抽象工厂模式
- JAVA抽象工厂模式
- java抽象工厂模式
- 【Java】抽象工厂模式
- JAVA-抽象工厂模式
- Java 抽象工厂模式
- java 抽象工厂模式
- JAVA抽象工厂模式
- Java抽象工厂模式
- java 抽象工厂模式
- 利用Lambda获取类中属性的名称
- 一个很好的学习Linux的网站
- sicily--1194. Message Flood
- SMTP邮件发送协议分析
- NIO Socket学习
- JAVA中抽象工厂模式
- java观察者模式介绍
- 使用kgdb调试linux内核及内核模块
- ado数据库编程(一)
- 自定义一个类中包含一个功能和readLine一致的方法
- MyEclipse9.1 启动和运行速度优化设置
- 解决Linux系统 ping: sendmsg: Operation not permitted 问题
- pjsip在android上使用的例子
- 2.rails笔记