zoukankan      html  css  js  c++  java
  • 单一职责

    官方定义:应该有且仅有一个原因引起类的变更

    通常来说就是一个类最好负责一件事情,就一个类而言,就应该仅有一个引起它变化的原因,我们写编程的时候很自然的给一个类增加各种功能,属性、字段什么的、那么将来维护的时候就会出现很多问题,我们添加功能或者别的任何需求都要改动这个类,缺乏灵活性。

    自己理解:我觉得单一职责好理解,就是不好运用,因为需要对软件有很强的分析能力,就比如做一个软件,做这些功能的时候,你就要把这些功能职责的划分的很明确。

    实例:生产商生成手机就要实现相应的接口和方法,例如:CPU、内存,实现打电话、接电话的功能.......

    /// <summary>
        /// 手机属性接口
        /// </summary>
        public interface Imobilephonebasep
        {
            //运行内存
            string Neicun { get; set; }
            //存储内存
            string Cunchu { get; set; }
            //CPU
            string Cpu { get; set; }
            //大小
            string Size { get; set; }
        }
    
        /// <summary>
        /// 手机扩展属性
        /// </summary>
        public interface ImobilephonebasepExtend
        {
            //摄像头像素
            string px { get; set; }
        }
    
        /// <summary>
        /// 手机功能接口
        /// </summary>
        public interface ImobilephonebaseFunc
        {
            //手机充电
            void Chongdian(ElectricSource ElectricSource);
            //打电话
            void DaDianHua();
            //接电话
            void JieDianHua();
        }
    
        /// <summary>
        /// 手机功能扩展接口
        /// </summary>
        public interface ImobilephonebaseFuncExecten
        {
            //上网
            void Intenet();
            //移动办公
            void MOA();
            //玩游戏
            void palyGame();
        }
    

      如果我们不用扩展属性、扩展方法的话,设想一下:虽然现在很多人使用智能机,有拍照、登扣扣这些功能,你直接全部定义在一个接口里面,那么生产老人机的时候也要实现这种接口就显得不那么合理。

    实现类

      /// <summary>
        /// 手机基本属性实现
        /// </summary>
        public class PhoneProperty : Imobilephonebasep
        {
            public string Cpu
            {
                get
                {
                    throw new NotImplementedException();
                }
    
                set
                {
                    throw new NotImplementedException();
                }
            }
    
            public string Cunchu
            {
                get
                {
                    throw new NotImplementedException();
                }
    
                set
                {
                    throw new NotImplementedException();
                }
            }
    
            public string Neicun
            {
                get
                {
                    throw new NotImplementedException();
                }
    
                set
                {
                    throw new NotImplementedException();
                }
            }
    
            public string Size
            {
                get
                {
                    throw new NotImplementedException();
                }
    
                set
                {
                    throw new NotImplementedException();
                }
            }
    
            /// <summary>
            /// 手机扩展属性实现
            /// </summary>
            public class PhoneExetendProperty : ImobilephonebasepExtend
            {
                public string px
                {
                    get
                    {
                        throw new NotImplementedException();
                    }
    
                    set
                    {
                        throw new NotImplementedException();
                    }
                }
            }
    
            /// <summary>
            /// 手机基础功能实现
            /// </summary>
            public class PhoneFunc : ImobilephonebaseFunc
            {
                public void Chongdian(ElectricSource ElectricSource)
                {
                    throw new NotImplementedException();
                }
    
                public void DaDianHua()
                {
                    throw new NotImplementedException();
                }
    
                public void JieDianHua()
                {
                    throw new NotImplementedException();
                }
            }
    
            /// <summary>
            /// 手机扩展功能实现
            /// </summary>
            public class PhoneExetendFunc : ImobilephonebaseFuncExecten
            {
                public void Intenet()
                {
                    throw new NotImplementedException();
                }
    
                public void MOA()
                {
                    throw new NotImplementedException();
                }
    
                public void palyGame()
                {
                    throw new NotImplementedException();
                }
            }

    这样的话相对来说合理一点,或许会有更完美的解决,就需要根据需求分析,建立对应的属性、方法

     

  • 相关阅读:
    面试中你能做到随机应变吗? 沧海
    QQ只是一场意外 沧海
    面 试 中 要 慎 言 沧海
    你会应对这些面试题吗? 沧海
    面 试 小 技 巧 沧海
    面试抓住最初三分钟至关重要 沧海
    面试的十二种高级错误 沧海
    几种有难度的面试 沧海
    面试技巧: 轻松过关10种方法 沧海
    面 试 细 节 一 点 通 沧海
  • 原文地址:https://www.cnblogs.com/liu23/p/9034138.html
Copyright © 2011-2022 走看看