抽象工厂模式

来源:互联网 发布:c erp系统源码下载 编辑:程序博客网 时间:2024/06/14 02:57

抽象工厂模式

抽象工厂模式与工厂方法模式最大的区别在于工厂方法模式针对的是一个产品等级结构,而抽象工厂模式则需要面对多个产品等级结构。简单的说,抽象工厂模式生产一系列的产品(这类产品称为产品族)。而在工厂方法模式里一个具体的工厂只生产一个具体的产品类。



java代码:

//Button.java

package com.designpattern.abstractfactory;
public interface Button {
public void type();
}


//WindowsButton.java

package com.designpattern.abstractfactory;
public class WindowsButton implements Button {
public void type() {
System.out.println("this is a Windows Button");
}
}

//LinuxButton.java

package com.designpattern.abstractfactory;
public class LinuxButton implements Button {
public void type() {
System.out.println("this is a Linux Button");
}
}


//Dialog.java

package com.designpattern.abstractfactory;
public interface Dialog {
public void type();
}


//WindowsDialog.java

package com.designpattern.abstractfactory;
public class WindowsDialog implements Dialog{
public void type() {
System.out.println("this is a Windows Dialog");
}
}


//LinuxDialog.java

package com.designpattern.abstractfactory;
public class LinuxDialog  implements Dialog{
public void type() {
System.out.println("this is a Linux Dialog");
}
}


//OSFactory.java

package com.designpattern.abstractfactory;
public abstract class OSFactory {
public abstract Button createButton();
public abstract Dialog createDialog();
}

//WindowsFactory.java

package com.designpattern.abstractfactory;
public class WindowsFactory extends OSFactory {

public Button createButton() {
return new WindowsButton();
}
public Dialog createDialog() {
return new WindowsDialog();
}
}

//LinuxFactory.java

package com.designpattern.abstractfactory;
public class LinuxFactory extends OSFactory {
public Button createButton() {
return new LinuxButton();
}
public Dialog createDialog() {
return new LinuxDialog();
}
}

//test.java

package com.designpattern.abstractfactory;
public class test {
public static void main(String[] args) {
OSFactory factory = new LinuxFactory();
Button btn =factory.createButton();
Dialog dlg = factory.createDialog();
btn.type();
dlg.type();
}
}

该测试也可以利用XML支持,对上一章已经有所简介,这里简单运用,不进行XML文件。

原创粉丝点击