zoukankan      html  css  js  c++  java
  • 合成

    1:概述
         合成模式有时又叫做部分-整体模式(Part-Whole)。合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式可以使客户端将单纯元素与复合元素同等看待。
    2:类图

    抽象构件(Component)角色:这是一个抽象角色,它给参与组合的对象规定一个接口。这个角色给出共有接口及其默认行为。
    树叶构件(Leaf)角色:代表参加组合的树叶对象。一个树叶对象没有下级子对象。
    树枝构件(Composite)角色:代表参加组合的有子对象的对象,并给出树枝构件对象的行为。
    3:代码

        /// <summary>
        
    /// 抽象构件(Component)角色
        
    /// </summary>

        public interface IUserBase
        
    {
            
    void AddChild(IUserBase userBase);
            
    void SetPower(string power);
        }


        
    /// <summary>
        
    /// 树叶构件(Leaf)角色
        
    /// </summary>

        public class User:IUserBase
        
    {
            
    private string powerList = string.Empty;

            
    public void AddChild(IUserBase userBase)
            


            }


            
    public void SetPower(string power)
            
    {
                powerList 
    = power;
            }

        }


        
    /// <summary>
        
    /// 树枝构件(Composite)角色
        
    /// </summary>

        public class Group : IUserBase
        
    {
            
    private ArrayList userlist = new ArrayList();

            
    public void AddChild(IUserBase userBase)
            
    {
                userlist.Add(userBase);
            }


            
    public void SetPower(string power)
            
    {
                
    foreach (IUserBase userbase in userlist)
                
    {
                    userbase.SetPower(power);
                }

            }

        }

    //调用
                Bll.Composite.Group group1 = new Bll.Composite.Group();
                Bll.Composite.Group group2 
    = new Bll.Composite.Group();

                Bll.Composite.User user1 
    = new Bll.Composite.User();
                Bll.Composite.User user2 
    = new Bll.Composite.User();
                Bll.Composite.User user3 
    = new Bll.Composite.User();

                group1.AddChild(user1);
                group1.AddChild(user2);

                group2.AddChild(user1);
                group2.AddChild(group1);

                
    //设置组权限,则设置了组内的用户权限
                group1.SetPower("权限列表A");
                group2.SetPower(
    "权限列表B");

                user3.SetPower(
    "权限列表B");
  • 相关阅读:
    剖析下聊天室
    PHP与Nginx之间的运行机制以及原理
    Nginx源码结构
    Nginx初始化过程总结
    Nginx架构解析
    KMP && KMP求字符串循环节
    IOS开发之 ---- 苹果系统代码汉字转拼音
    jQuery--表单的过滤
    jQuery--子元素过滤
    存储过程 psal emp.sal%type是什么意思
  • 原文地址:https://www.cnblogs.com/tommyli/p/1062296.html
Copyright © 2011-2022 走看看