6 抽象工厂模式

来源:互联网 发布:weka 自定义 分类算法 编辑:程序博客网 时间:2024/05/11 18:37
一 抽象工厂模式:这种类型的设计模式属于创建型模式,抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。

在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。

二 实例

1 接口和实现类

Color接口

public interface Color {void myColor(); }

Disk接口

public interface Disk {void read();void write();}

实现类:U盘和Red
public class UPanImpl implements Disk{public void read() {System.out.println("read u盘");}public void write() {System.out.println("write U盘");}}

public class RedImpl implements Color {public void myColor() {System.out.println("我是red");}}
2 创建抽象类MyAbtractFactory来获取工厂

public abstract class MyAbtractFactory {public abstract Color getColor(String color);public abstract Disk getDisk(String disk);}

3  ColorFactory和DiskFactory:

public class ColorFactory extends MyAbtractFactory {@Overridepublic Color getColor(String color) {if(color.equalsIgnoreCase("Red"))return new RedImpl();if(color.equalsIgnoreCase("Green"))return new GreenImpl();return null;}@Overridepublic Disk getDisk(String disk) {return null;}}

public class DiskFactory extends MyAbtractFactory{@Overridepublic Color getColor(String color) {return null;}@Overridepublic Disk getDisk(String disk) {if(disk.equalsIgnoreCase("UPan"))return new UPanImpl();if(disk.equalsIgnoreCase("Mp3Impl"))return new Mp3Impl();return null;}}

4 factoryProduct类:

public class FactoryProduct {public static MyAbtractFactory getFactory(String choice){if(choice.equalsIgnoreCase("Disk"))return new DiskFactory();if(choice.equalsIgnoreCase("Color"))return new ColorFactory();return null;}}

5 Main方法

public class Main {public static void main(String[] args) {MyAbtractFactory diskFactory = FactoryProduct.getFactory("Disk");Disk disk1  = diskFactory.getDisk("UPan");disk1.read();MyAbtractFactory colorFactory = FactoryProduct.getFactory("Color");Color color1 = colorFactory.getColor("Red");color1.myColor();}}
输出结果:  read u盘

                  我是red


2 0