第三周作业
发布于: 2020 年 10 月 04 日
第一题

第二题
package composite;import java.util.ArrayList;import java.util.List;public class CompositeComponent {    public static void main(String[] args) {        Component logo = new Component("Picture");        Component login = new Component("Button-login");        Component register = new Component("Button-register");        Component labelUserName = new Component("Label-username");        Component labelPassword = new Component("Label-password");        Component textBoxUserName = new Component("Textbox-username");        Component textBoxPassword = new Component("Textbox-password");        Component checkboxRemember = new Component("Checkbox-remember");        Component textBoxRemember = new Component("Textbox-remember");        Component linkLableForget = new Component("LinkLable-forget");        Composite frame1 = new Composite("frame1");        frame1.addComponent(labelUserName);        frame1.addComponent(textBoxUserName);        frame1.addComponent(labelPassword);        frame1.addComponent(textBoxPassword);        frame1.addComponent(checkboxRemember);        frame1.addComponent(textBoxRemember);        frame1.addComponent(linkLableForget);        Composite winform = new Composite("window");        winform.addComponent(logo);        winform.addComponent(frame1);        winform.addComponent(login);        winform.addComponent(register);        winform.draw();    }}class Component {    private String name;    public Component(String name) {        this.name = name;    }    public void draw() {        System.out.println(String.format("print %s", name));    }}class Composite extends Component {    public Composite(String name) {        super(name);    }    private List<Component> components = new ArrayList<Component>();    public void addComponent(Component c) {        components.add(c);    }    @Override    public void draw() {        super.draw();        for (Component c : components) {            c.draw();        }    }}
心得体会

看到spring的单例模式有两个疑问:
if嵌套synchronized像是双重锁检测,典型的反模式。后来查了下资料,觉得应该是靠final修饰Map来解决可见性问题
synchronized同步块中没有再次判断singletonObject是否为空,好像做不到并发安全
 划线
   评论
  复制
发布于: 2020 年 10 月 04 日 阅读数: 15
版权声明: 本文为 InfoQ 作者【华美而火锅】的原创文章。
原文链接:【http://xie.infoq.cn/article/ff35bd6c02f84812fb0e46aa8】。未经作者许可,禁止转载。
华美而火锅
  关注 
还未添加个人签名 2017.11.28 加入
还未添加个人简介
 
 
  
  
 
 
 
 
 
 
 
 
 
 
    
评论