大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。



interface Button {
}
interface TextArea {
}
class WindowButton implements Button {
}
class LinuxButton implements Button {
}
class WindowTextArea implements TextArea {
}
class LinuxTextArea implements TextArea {
}
工厂类代码:
public interface IGuiFactory {
// 产品Button创建方法
Button createButton();
// 产品TextArea创建方法
TextArea createTextArea();
// 有n个产品等级,就n个创建方法
}
class LinuxGuiFactory implements IGuiFactory {
@Override
public Button createButton() {
return new LinuxButton();
}
@Override
public TextArea createTextArea() {
return new LinuxTextArea();
}
}
class WindowsGuiFactory implements IGuiFactory {
@Override
public Button createButton() {
return new WindowButton();
}
@Override
public TextArea createTextArea() {
return new WindowTextArea();
}
}
client代码:
public class Client {
public static void main(String[] args) {
// 为了演示,使用new方式创建工厂,最好做成单例的或先初始化好
IGuiFactory factory = new WindowsGuiFactory();
Button button = factory.createButton();
TextArea textArea = factory.createTextArea();
System. out.println(button);
System. out.println(textArea);
}
}
有多少个产品族,就创建多少个工厂实现,有多少个产品等级,工厂中就要对外提供多少个创建产品方法。
事实上工厂模式的长处,抽象工厂基本都有的,这里说说抽象工厂特有的长处:
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118849.html原文链接:https://javaforall.net
