• 面向对象原则之单一职责原则实现


    根据《你必须知道的.NET》单一职责原则章节启发,使用vs2010 uml建模,并生成代码。完成权限职责分离UML设计,说明面向对象单一职责原则。涉及到的知识点:单一职责原则、vs2010 uml建模项目、权限职责分离的设计。

    image

    图1:使用vs2010完成的uml类图

     

    image            image

    图2:整个项目解决方案                            图3:Uml类图资源

    完成图1可以在UML模型资源管理器中右键ModelingProject2->点击Generate Code生成图2解决方案中的ModelingProject2Lib项目。经过简单修改完成单一职责原则实现代码。

    image

    特别注意:改写生成的DBManagerProxy 类时,传给GetPermission(string id)的参数应为:GetPermission((dbmanager as DBManager).Id。

    接口代码:

    //------------------------------------------------------------------------------
    // <auto-generated>
    //     This code was generated by a tool.
    //     Changes to this file will be lost if the code is regenerated.
    // </auto-generated>
    //------------------------------------------------------------------------------
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text; 
    
    public interface IDBAction 
    {
        void Add(); 
    
        bool Delete(); 
    
        void View(); 
    
    } 
    
    

    数据管理类代码:

    //------------------------------------------------------------------------------
    // <auto-generated>
    //     This code was generated by a tool.
    //     Changes to this file will be lost if the code is regenerated.
    // </auto-generated>
    //------------------------------------------------------------------------------
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text; 
    
    public class DBManager : IDBAction
    {
        private DBManagerProxy dbmanagerProxy;
        private string id = String.Empty; 
    
        public string Id {
            get { return id; }
            set { id = value; }
        } 
    
        public DBManager(string id) {
            Id = id;
        }
        public virtual void Add()
        {
            Console.WriteLine(Id +"用户具有增加数据权限!!!");
        } 
    
        public virtual bool Delete()
        {
            throw new System.NotImplementedException();
        } 
    
        public virtual void View()
        {
            throw new System.NotImplementedException();
        } 
    
    } 
    
    
    
    数据管理代理类代码:
    
    //------------------------------------------------------------------------------
    // <auto-generated>
    //     This code was generated by a tool.
    //     Changes to this file will be lost if the code is regenerated.
    // </auto-generated>
    //------------------------------------------------------------------------------
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text; 
    
    public class DBManagerProxy : IDBAction
    {
        private IDBAction dbmanager;
        public DBManagerProxy() { 
        }
        public DBManagerProxy(IDBAction dbAction)
        {
            dbmanager = dbAction;
        } 
    
        public virtual string GetPermission(string id) {
            return ID = id;
        } 
    
        public virtual bool Delete()
        {
            throw new System.NotImplementedException();
        } 
    
        public virtual void View()
        {
            throw new System.NotImplementedException();
        } 
    
        public virtual void Add()
        {
            if (GetPermission((dbmanager as DBManager).Id) == "CanAdd") {
                dbmanager.Add();
            }
        } 
    
        public string ID { get; set; }
    } 
    
    

    数据管理客户端代码:

    //------------------------------------------------------------------------------
    // <auto-generated>
    //     This code was generated by a tool.
    //     Changes to this file will be lost if the code is regenerated.
    // </auto-generated>
    //------------------------------------------------------------------------------
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text; 
    
    public class DBClient
    {
        private IDBAction Manage
        {
            get;
            set;
        } 
    
        public virtual IDBAction IDBAction
        {
            get;
            set;
        } 
    
       public static void Main()
       {
           IDBAction DBManager = new DBManagerProxy(new DBManager("CanAdd"));
           DBManager.Add();
           Console.ReadKey();
       }
    } 
    
    

    以上为单一设计原则的所用UML建模截图,及实现代码。如有好的意见请不令赐教!

  • 相关阅读:
    java实现调用打印机代码
    java合并PDF文件
    关于如何把项目做得更好的一次思考
    web语义化之SEO和ARIA
    快速理解web语义化
    使用HTML5地理位置定位到城市的方法及注意事项
    Plupload上传插件简单整理
    两列布局——左侧宽度固定,右侧宽度自适应的两种方法
    Java并发编程之线程基础
    Spring Boot学习之YAML文件配置
  • 原文地址:https://www.cnblogs.com/jiangxin/p/2856457.html
Copyright © 2020-2023  润新知