程序设计六大原则之单一职责原则

单一职责原则(Single Responsibility Principle,SRP)

定义:

一个类只有一个发生变化的原因。通俗的说,一个类只负责一项职责。又称单一功能原则,适用于接口、方法、类

原理:

如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力

优点:

降低类的复杂度

提高类的可读性

提高系统的可维护性

变更引起的风险降低,一个接口的修改只对相应的实现类有影响,对其他接口无影响,这对系统的扩展性,维护性都有非常大的帮助

示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SRP.Study
{
    /// <summary>
    /// 照相的接口
    /// </summary>
   public interface IPhotograph
    {
        void Photograph();
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SRP.Study
{
    /// <summary>
    /// 播放音乐的接口
    /// </summary>
   public interface IPlayMusic
    {
        void PlayMusic();
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SRP.Study
{
    /// <summary>
    /// 实现拍照、播放音乐的手机类
    /// </summary>
    public class MobilePhone : IPhotograph, IPlayMusic
    {
        /// <summary>
        /// 拍照方法
        /// </summary>
        public void Photograph()
        {
            Console.WriteLine("拍照片");
        }
        /// <summary>
        /// 播放音乐方法
        /// </summary>
        public void PlayMusic()
        {
            Console.WriteLine("播放音乐");
        }
    }
}

   拆分类,确认单一职责 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SRP.Study
{
    /// <summary>
    /// 相机类
    /// </summary>
    public class Carmera : IPhotograph
    {
        /// <summary>
        /// 拍照方法
        /// </summary>
        public void Photograph()
        {
            Console.WriteLine("拍照片");
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SRP.Study
{
    /// <summary>
    /// 音乐类
    /// </summary>
    public class Music : IPlayMusic
    {
        /// <summary>
        /// 播放音乐方法
        /// </summary>
        public void PlayMusic()
        {
            Console.WriteLine("播放音乐");
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SRP.Study
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                //MobilePhone phone = new MobilePhone();
                //phone.PlayMusic();
                //phone.Photograph();

                IPhotograph Carmera = new Carmera();
                IPlayMusic Music = new Music();
                Music.PlayMusic();
                Carmera.Photograph();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.ReadKey();
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值