架构师第三周作业

发布于: 2020 年 06 月 24 日

一、手写单例模式

二、组合模式练习

1、定义控件接口

 

public interface IWidget {

   

     public void print();

     

     public void addChild(IWidget child);

 

}

 

2、节点控件实现

 

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

 

public class WidgetNode implements IWidget {

    //控件类型

    private String type;

    //控件名称

    private String name;

    //子控件集合

    private List<IWidget> children;

 

    public WidgetNode(String type,String name){

       this.name = name;

       this.type = type;

       this.children = new ArrayList();

    }

    public void addChild(IWidget child) {

       this.children.add(child);

 

    }

    public void print() {

       //打印输出自身

       System.out.println("print "+this.type+"("+this.name+")");

       //打印输出子控件

       for (Iterator iterator = this.children.iterator(); iterator.hasNext();) {

           IWidget child = (IWidget) iterator.next();

           child.print();

       }

    }

 

}

 

3、叶子控件实现

 

import java.util.ArrayList;

import java.util.List;

 

public class WidgetLeaf implements IWidget {

 

    //控件类型

    private String type;

    //控件名称

    private String name;

   

    public WidgetLeaf(String type,String name){

       this.name = name;

       this.type = type;

    }

 

    public void addChild(IWidget child) {

       //叶子控件不支持增加子节点操作

       throw new UnsupportedOperationException();

    }

 

    public void print() {

       //打印输出自身

       System.out.println("print "+this.type+"("+this.name+")");

    }

 

}

 

4、客户端类

 

public class Client {

 

    public static void main(String[] args) {

      

       IWidget winfrom = new WidgetNode("WinFrom","Window窗口");

      

       IWidget pictrue = new WidgetLeaf("Pictrue","LOGO图片");

       IWidget button1 = new WidgetLeaf("Button","登录");

       IWidget button2 = new WidgetLeaf("Button","注册");

       IWidget frame = new WidgetNode("Frame","FRAME1");

      

       winfrom.addChild(pictrue);

       winfrom.addChild(button1);

       winfrom.addChild(button2);

       winfrom.addChild(frame);

      

       IWidget lable1 = new WidgetLeaf("Lable","用户名");

       IWidget textbox = new WidgetLeaf("TextBox","文本框");

       IWidget lable2 = new WidgetLeaf("Lable","密码");

       IWidget passwordbox = new WidgetLeaf("PasswordBox","密码框");

       IWidget checkbox = new WidgetLeaf("CheckBox","复选框");

       IWidget textbox2 = new WidgetLeaf("TextBox","记住用户名");

       IWidget linklable = new WidgetLeaf("LinkLable","忘记密码");

      

       frame.addChild(lable1);

       frame.addChild(textbox);

       frame.addChild(lable2);

       frame.addChild(passwordbox);

       frame.addChild(checkbox);

       frame.addChild(textbox2);

       frame.addChild(linklable);

      

       winfrom.print();

    }

 

}

 

5、客户端类main函数执行结果输出

 

print WinFrom(Window窗口)

print Pictrue(LOGO图片)

print Button(登录)

print Button(注册)

print Frame(FRAME1)

print Lable(用户名)

print TextBox(文本框)

print Lable(密码)

print PasswordBox(密码框)

print CheckBox(复选框)

print TextBox(记住用户名)

print LinkLable(忘记密码)

 

用户头像

小蚂蚁

关注

还未添加个人签名 2018.08.10 加入

还未添加个人简介

评论

发布
暂无评论
架构师第三周作业