zoukankan      html  css  js  c++  java
  • 标记接口模式【其他模式】

    标记接口模式

    public class Marker {
        /**
         * 标记模式:
         * Using empty interfaces as markers to distinguish special treated objects。
         * 使用空的标记接口来区分需要特殊处理的对象。
         */
        @SuppressWarnings("boxing")
        @Test
        public void all() {
            final PermissionServiceImpl serviceImpl = new PermissionServiceImpl();
            final Map<Permission, Boolean> map = serviceImpl.getPermission("zxd");
            Assert.assertTrue(map.get(ReadPermission.ALL));
        }
    }
    
    interface Permission {
    }
    
    enum ReadPermission implements Permission {
        SELF, ALL;
    }
    
    enum WritePermission implements Permission {
        SELF;
    }
    
    interface PermissionService {
        /**
         * 高内聚,将所有的权限操作都封装在一处
         */
        Map<Permission, Boolean> getPermission(String userId);
    }
    
    class PermissionServiceImpl implements PermissionService {
    
        @Override
        public Map<Permission, Boolean> getPermission(String userId) {
            final Map<Permission, Boolean> map = Maps.newHashMap();
            if ("zxd".equals(userId)) {
                map.put(ReadPermission.ALL, Boolean.TRUE);
            }
    
            map.put(ReadPermission.SELF, Boolean.TRUE);
            map.put(WritePermission.SELF, Boolean.TRUE);
            return map;
        }
    }
    
  • 相关阅读:
    CodeForce VKcup A
    CNN卷积神经网络
    神经网络
    我的机器学习之路
    [OPENCV] 第一个程序 识别颜色
    Android 登录界面与首页的设计
    go web的基本原理
    Go语言标准库之http/template
    吞吐量(TPS)、QPS、并发数、响应时间(RT)概念
    数据库恢复技术
  • 原文地址:https://www.cnblogs.com/zhuxudong/p/10211105.html
Copyright © 2011-2022 走看看