Java学习笔记---设计模式之抽象工厂模式

来源:互联网 发布:科盟网络 编辑:程序博客网 时间:2024/04/29 09:57

一、引言

       闲时多写写博客,忙时多敲敲代码,充实又有收获,何乐而不为?马上要找工作了,后悔以前太懒惰,积累太少,现在只能奋起追逐。by the way,有好工作的可以求介绍。坐标:杭州、武汉。好了,言归正传,今天的正题是抽象工厂模式。

二、什么叫抽象工厂模式

       提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

三、抽象工厂的类图

       

四、抽象工厂方式中的角色

        (1)抽象工厂角色:抽象工厂模式的核心,包含对多个产品结构的声明,任何工厂类都必须实现这个接口。

(2)具体工厂角色:具体工厂类是抽象工厂的一个实现,负责实例化某个产品族中的产品对象。

        (3)抽象产品角色:抽象模式所创建的所有对象的父类,它负责描述所有实现共有的公共接口。

        (4)具体产品角色:抽象模式所创建的具体实例对象。

五、举例说明

工程结构:


Fruit.java

package designModeAbstractFactory;//抽象产品类public interface Fruit {public String getName();public String getColor();}
Apple.java

package designModeAbstractFactory;//具体产品角色类public class Apple implements Fruit {@Overridepublic String getName() {// TODO Auto-generated method stubreturn "Apple";}@Overridepublic String getColor() {// TODO Auto-generated method stubreturn "Red";}public void appleDo(){System.out.println("apple can be eat");}}
Orange.java

package designModeAbstractFactory;//具体产品类public class Orange implements Fruit{@Overridepublic String getName() {// TODO Auto-generated method stubreturn "Orange";}@Overridepublic String getColor() {// TODO Auto-generated method stubreturn "Yellow";}public void orangeDo(){System.out.println("orange do can be look");}}
IFruitFactory.java

package designModeAbstractFactory;//抽象工厂角色public abstract class IFruitFactory {public abstract Apple createApple();public abstract Orange createOrange();}
FruitFactory.java

package designModeAbstractFactory;//具体工厂类public class FruitFactory extends IFruitFactory {@Overridepublic Apple createApple() {// TODO Auto-generated method stubreturn new Apple();}@Overridepublic Orange createOrange() {// TODO Auto-generated method stubreturn new Orange();}}
AbstractFactoryTest.java

package designModeAbstractFactory;//测试类public class AbstractFactoryTest {public static void main(String args[]){IFruitFactory fruitFactory = new FruitFactory();Apple apple = fruitFactory.createApple();System.out.println(apple.getName());System.out.println(apple.getColor());apple.appleDo();Orange orange=fruitFactory.createOrange();System.out.println(orange.getName());System.out.println(orange.getColor());orange.orangeDo();}}

运行结果:

Apple
Red
apple can be eat
Orange
Yellow
orange do can be look

六、总结

        无论是简单工厂模式、工厂方法模式还是抽象工厂模式,他们之间都是可以相互转化的,而不同之处在于他们所对应的产品种类规模和产品种类级别。因此只要灵活运用,不必在意具体是那种方式。
        所以,在使用工厂模式时,只需要关心降低耦合度的目的是否达到了。




0 0
原创粉丝点击