interface Friut{
public Friut get();
}
class Apple implements Friut{
public Friut get(){
return new Apple();
}
}
class Orange implements Friut{
public Friut get(){
return new Orange();
}
}
class Banana implements Friut{
public Friut get(){
return new Banana();
}
}
interface FriutFactory{
public Friut makeFriut();
}
class AppleFactory implements FriutFactory{
@Override
public Friut makeFriut() {
return new Apple();
}
}
class OrangeFactory implements FriutFactory{
@Override
public Friut makeFriut(){
return new Orange();
}
}
class BananaFactory implements FriutFactory{
@Override
public Friut makeFriut() {
return new Banana();
}
}
class FriutShop{
public static Friut take(FriutFactory factory){
return factory.makeFriut();
}
public static void main(String[] args){
System.out.println("进入商店买水果:");
take(new AppleFactory());
take(new BananaFactory());
take(new OrangeFactory());
}
}
C 抽象工厂方法
工厂方法已经很专一了,为什么还要抽象工厂呢?
原来水果店规模以后,已经不单单只卖某一种水果了,现在要产品成套销售(苹果+香蕉=》天天美容装)
从现在看,每个工厂都生产不同种类的产品(这里可能区分不是很明显,只是用苹果和苹果汁带表示,you can understand ?)
这是工厂方法和抽象工厂的差别,从单一对象的创建扩展了.
代码实现:
interface Friut{
public Friut get();
}
interface Drink{
public Drink get();
}
class AppleCider implements Drink{
@Override
public Drink get() {
return new AppleCider();
}
}
class Apple implements Friut{
public Friut get(){
return new Apple();
}
}
class Orange implements Friut{
public Friut get(){
return new Orange();
}
}
class OrangeCider implements Drink{
@Override
public Drink get() {
return new OrangeCider();
}
}
class BananaCider implements Drink{
@Override
public Drink get() {
return new BananaCider();
}
}
class Banana implements Friut{
public Friut get(){
return new Banana();
}
}
interface ShopFactory{
public Friut makeFriut();
public Drink makeDrink();
}
class AppleFactory implements ShopFactory{
@Override
public Friut makeFriut() {
return new Apple();
}
@Override
public Drink makeDrink() {
return new AppleCider();
}
}
class OrangeFactory implements ShopFactory{
@Override
public Friut makeFriut(){
return new Orange();
}
@Override
public Drink makeDrink() {
return new OrangeCider();
}
}
class BananaFactory implements ShopFactory{
@Override
public Friut makeFriut() {
return new Banana();
}
@Override
public Drink makeDrink() {
return new BananaCider();
}
}
class FriutShop{
public static String take(ShopFactory factory){
System.out.println("要是有个有个名字该多好啊.一定记住是一族产品");
return factory.makeFriut().toString() + factory.makeDrink().toString();
}
public static void main(String[] args){
System.out.println("进入商店买水果:");
take(new AppleFactory());
take(new BananaFactory());
take(new OrangeFactory());
}
}
相关推荐
Java设计模式之工厂模式 Java设计模式之工厂模式
Java设计模式之工厂模式实现,供大家一起共同分享学习。
java设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种...
设计模式 工厂模式,简单工厂模式 抽象工厂模式 java 反射
JAVA设计模式之工厂模式.pdf
工厂模式:对java工厂模式详细分析,理解.。。
Java设计模式之工厂模式(Factory).doc
JAVA设计模式之工厂模式3种完整免费提供.pdf
JAVA设计模式之工厂模式(3种完整免费提供).pdf
专题资料(2021-2022年)Java设计模式之工厂模式Factory.doc
工厂模式按照《Java 与模式》中的提法分为三类: 1. 简单工厂模式(Simple Factory) 2. 工厂方法模式(Factory Method) 3. 抽象工厂模式(Abstract Factory) 这三种模式从上到下逐步抽象,并且更具一般性。还有一种...
主要介绍了Java设计模式之工厂模式(Factory模式)介绍,本文讲解了为何使用工厂模式、工厂方法、抽象工厂、Java工厂模式举例等内容,需要的朋友可以参考下
抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程中,通常...
主要介绍了Java设计模式之工厂模式实现方法,结合实例形式较为详细的分析了工厂模式的分类、原理、实现方法与相关注意事项,需要的朋友可以参考下
给同学上课时做的ppt