package abstractFactory;
//抽象工厂
public interface AbFactory {
public Text gettextproduct();
public Button getbuttonproduct();
}
//抽象产品
public interface Button {
void name();
}
public interface Text {
void name();
}
//Linux工厂的具体产品
public class LinuxButton implements Button{
@Override
public void name() {
System.out.println("这是LinuxButton");
}
}
public class LinuxText implements Text{
@Override
public void name() {
System.out.println("这是LinuxText");
}
}
//Unix工厂的具体产品
public class UnixButton implements Button{
@Override
public void name() {
System.out.println("这是UnixButton");
}
}
public class UnixText implements Text{
@Override
public void name() {
System.out.println("这是UnixText");
}
}
//Windows工厂的具体产品
public class WindowsButton implements Button{
@Override
public void name() {
System.out.println("这是WindowsButton");
}
}
public class WindowsText implements Text{
@Override
public void name() {
System.out.println("这是WindowsText");
}
}
//具体工厂
public class LinuxFactory implements AbFactory{
@Override
public Text gettextproduct() {
return new LinuxText();
}
@Override
public Button getbuttonproduct() {
return new LinuxButton();
}
}
public class UnixFactory implements AbFactory{
@Override
public Text gettextproduct() {
return new UnixText();
}
@Override
public Button getbuttonproduct() {
return new UnixButton();
}
}
public class WindowsFactory implements AbFactory{
@Override
public Text gettextproduct() {
return new WindowsText();
}
@Override
public Button getbuttonproduct() {
return new WindowsButton();
}
}
//客户端
package abstractFactory;
public class Client {
public static void main(String[] args) {
/**
* 1.如果是增加一种产品的话,生成的类有 :产品本身的接口类、具体Unix产品类、具体Windows产品类、具体Linux产品类,4个
* 2.如果是增加一个工厂的话,比如IOS,生成的类有:一个IOS工厂类,具体的IOSText、具体的IOSButton类。3个
*/
Button button,button1,button2;
Text text,text1,text2;
System.out.println("---------------这个Linux工厂的两种产品-------------");
button=new LinuxFactory().getbuttonproduct();
button.name();
text=new LinuxFactory().gettextproduct();
text.name();
System.out.println("---------------这个Unix工厂的两种产品-------------");
button1=new UnixFactory().getbuttonproduct();
button1.name();
text1=new UnixFactory().gettextproduct();
text1.name();
System.out.println("---------------这个Windows工厂的两种产品-------------");
button2=new WindowsFactory().getbuttonproduct();
button2.name();
text2=new WindowsFactory().gettextproduct();
text2.name();
}
}
03-11
8744
10-08
296
10-06
353