设计模式实验作业

题目 

抽象工厂设计模式-界面风格

某界面可以使用不同风格的控件:按钮Button有Window风格的子类WindowButton 和Motif风格的子类树MotifButton;

文本框TextBox也有Windows风格文本框WindowsTextBox 和Motif风格的文本框MotifTextBox ,AbstractFactory 是抽象工厂接口,实现具体的Window风格工厂WindowFactory 及Motif风格的工厂Motifactory 

要求输出:

createWindowsButton

createWindowTextBox

createMotifButton

createMotifTextBox

答: 

abstract class Button{};
abstract class TextBox{};

class WindowButton extends Button {
    public WindowButton(){
        System.out.println("createWindowsButton");
    }
}

class MotifButton extends Button {
    public MotifButton(){
        System.out.println("createMotifButton");
    }
}

class WindowTextBox extends  TextBox{
    public WindowTextBox(){
        System.out.println("createWindowTextBox");
    }
}

class MotifTextBox extends  TextBox{
    public MotifTextBox(){
        System.out.println("createMotifTextBox");
    }
}

interface AbstractFactory {
    Button createButton();
    TextBox createTextBox();
}

class Dialog{
    AbstractFactory factory;
    Button button;
    TextBox textBox;
    public void setFactory(AbstractFactory factory) {
        this.factory = factory;
    }
    public void init(){
        button=factory.createButton();
        textBox=factory.createTextBox();
    }
}

class WindowFactory implements AbstractFactory{
    
    public Button createButton() {
        return new WindowButton();
    }
    
    public TextBox createTextBox() {
        return new WindowTextBox();
    }
}

class Motiffactory implements AbstractFactory{
    
    public Button createButton() {
        return new MotifButton();
    }
    
    public TextBox createTextBox() {
        return new MotifTextBox();
    }
}

public class Main{
    public static void main(String[] args){
        Dialog dialog=new Dialog();
        dialog.setFactory(new WindowFactory());
        dialog.init();
        dialog.setFactory(new Motiffactory());
        dialog.init();
    }
}

  • 19
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值