概述
基础组合模式的学习:http://blog.csdn.net/lovelion/article/details/7956962
| 练习 Sunny软件公司欲开发一个界面控件库,界面控件分为两大类,一类是单元控件,例如按钮、文本框等,一类是容器控件,例如窗体、中间面板等,试用组合模式设计该界面控件库。 |
这里是UML图,采用的是组合模式中的安全模式,实现的效果的确是可以,缺点就是客户端需要知道真实的容器组件,代码是java
按照层级关系实现代码
package composite;
import java.util.ArrayList;
import javax.swing.DebugGraphics;
interface IComponent{
void show();
}
abstract class Single implements IComponent{
//一些其他的通用属性
//其他方法:比如绘制方法
public abstract void show() ;
}
abstract class SingleContent implements IComponent{
private ArrayList<IComponent> singlelist = new ArrayList<>();
public void show(){
for (IComponent iComponent : singlelist) {
iComponent.show();
}
}
public IComponent add(IComponent ic){
singlelist.add(ic);
return ic;
}
public void remove(IComponent ic){
singlelist.remove(ic);
}
}
class Button extends Single{
@Override
public void show() {
// TODO 自动生成的方法存根
System.out.println("绘制按钮成功");
}
}
class CheckBox extends Single{
@Override
public void show() {
// TODO 自动生成的方法存根
System.out.println("绘制选择栏成功");
}
}
class Window extends SingleContent{}
class CenterPanel extends SingleContent{}
客户端代码:
package composite;
public class Client {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Single s1, s2;
SingleContent c1, c2;
s1 = new Button();
s2 = new CheckBox();
c1 = new Window();
c2 = new CenterPanel();
c1.add(s1);
c1.add(c2);
c1.add(s2);
c2.add(s1);
c2.add(s2);
c1.show();
s1.show();
}
}
可以扩展的工作:
作为一个容器控件,他本身除了显示内部的控件外,还应该可以显示自己,我们直接给他自身扩展一个方法显示方法selfshow,然后再遍历子类之前先显示他自己,并将它自己添加到显示集合就可以了,如果大家有兴趣德华,可以实现哦
就是给SIngleContext声明一个抽象方法selfshow(),然后子类重写就可以了哦
最后
以上就是还单身小甜瓜为你收集整理的组合模式的实例的全部内容,希望文章能够帮你解决组合模式的实例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复