上一篇屌丝有了人民币工厂,当时屌丝突然想去美国兜一圈怎么办。
意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
适用性:
1、屌丝决定金额的大小
2、屌丝可以根据在不同的国度选择对应的货币
大家先看个类图
1.AbstractFactory
声明一个创建抽象产品对象的操作接口。
2.ConcreteFactory
实现创建具体产品对象的操作。
3.AbstractProduct
为一类产品对象声明一个接口。
4.ConcreteProduct
定义一个将被相应的具体工厂创建的产品对象。实现abstractProduct接口。
5.Client
仅使用由AbstractFactory和AbstractProduct类声明的接口
具体实现:
package creatingtype.abstractfactory;
public interface Money {
/**
* 打印钞票
*/
public void printMoney();
}
package creatingtype.abstractfactory;
public interface MoneyFactory {
//实例化RMB
public Money getRMB();
//实例化USD
public Money getUSD();
}
package creatingtype.abstractfactory;
public abstract class RMB implements Money {
/**
* 打印钞票
*/
public abstract void printMoney();
}
package creatingtype.abstractfactory;
public abstract class USD implements Money {
/**
* 打印钞票
*/
public abstract void printMoney();
}
package creatingtype.abstractfactory;
public class HundredFactory implements MoneyFactory {
public Money getRMB() {
return new RMB100();
}
public Money getUSD() {
return new USD100();
}
}
package creatingtype.abstractfactory;
public class RMB100 extends RMB {
public void printMoney() {
System.out.println("你获得了100的人民币一张");
}
}
package creatingtype.abstractfactory;
public class USD100 extends RMB {
public void printMoney() {
System.out.println("你获得了100的美元一张");
}
}
package creatingtype.abstractfactory;
public class FiftyFactory implements MoneyFactory {
public Money getRMB() {
return new RMB50();
}
public Money getUSD() {
return new USD50();
}
}
package creatingtype.abstractfactory;
public class RMB50 extends USD {
public void printMoney() {
System.out.println("你获得了50的人民币一张");
}
}
package creatingtype.abstractfactory;
public class USD50 extends USD {
public void printMoney() {
System.out.println("你获得了50的美元一张");
}
}
package creatingtype.abstractfactory;
// 抽象工厂模式
public class MainClass {
// 抽象工厂模式是所有形态的工厂模式中最为抽
// 象和最其一般性的。抽象工厂模式可以向客户端
// 提供一个接口,使得客户端在不必指定产品的具
// 体类型的情况下,能够创建多个产品族的产品对
// 象。
public static void main(String[] args) {
MoneyFactory ohf = new HundredFactory();
Money rmb100 = ohf.getRMB();
rmb100.printMoney();
Money usd100 = ohf.getUSD();
usd100.printMoney();
MoneyFactory ff = new FiftyFactory();
Money rmb50 = ff.getRMB();
rmb50.printMoney();
Money usd50 = ff.getUSD();
usd50.printMoney();
}
}
分享到:
相关推荐
java设计模式 抽象工厂模式详解 一张图让你彻底明白抽象工厂模式
介绍的是工厂模式 包括简单工厂模式、工厂方法模式、抽象工厂模式 包括PPT和代码
工厂方法模式和抽象工厂模式的区别,对工厂方法模式和抽象工厂模式做了简单的比较
设计模式 - 抽象工厂模式 抽象工厂模式是一种创建型设计模式,它提供了一种方式来创建一组相关或相互依赖的对象,而不需要指定具体的类。该模式允许客户端使用抽象的接口来创建一组相关的产品,而不需要关系实际...
深入浅出设计模式之抽象工厂模式+工厂方法模式+策略模式实现手机加工厂(加类图)
设计模式-抽象工厂模式(讲解及其实现代码)
抽象工厂设计模式抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式
设计模式 抽象工厂模式 反射 配置文件 设计模式 抽象工厂模式 反射 配置文件 设计模式 抽象工厂模式 反射 配置文件 设计模式 抽象工厂模式 反射 配置文件 设计模式 抽象工厂模式 反射 配置文件 设计模式 抽象工厂...
1、抽象工厂模式+反射技术 2、抽象工厂模式+简单工厂模式 3、仅仅是抽象工厂模式
设计模式--抽象工厂模式实现多数据库连接 设计模式,.net设计模式,抽象工厂
抽象工厂模式ppt。抽象工厂模式ppt。抽象工厂模式ppt。
抽象工厂模式抽象工厂模式抽象工厂模式抽象工厂模式抽象工厂模式抽象工厂模式
设计模式,AbstractFactory,抽象工厂模式
设计模式 抽象工厂模式 三层架构 设计模式 抽象工厂模式 三层架构 设计模式 抽象工厂模式 三层架构 设计模式 抽象工厂模式 三层架构 设计模式 抽象工厂模式 三层架构 要您一个资源分,也算是对我的尊重,谢谢下载。
通过C++实现了简单工厂模式、工厂模式、抽象工厂模式三大设计模式的经典案例。
抽象工厂模式.ppt抽象工厂模式.ppt
抽象工厂模式实现计算器源码,学习C#设计模式。
本文章通俗易懂的对工厂模式进行了讲解,相信您看完这篇文章会对工厂模式有更深入的了解
java设计模式【之】抽象工厂模式【源码】【场景:制作咖啡】 * 抽象工厂 * * 创建对象实例时,不要直接 new 类, 而是把这个new 类的动作放在一个工厂的方法中,并返回。 * 在工厂方法的基础上,进一步抽象工厂...