单一职责原则

单一职责原则

一个对象只包含单一的职责 实现高内聚、低耦合

例一:CRM客户管理系统 初步类关系图

CustomerDataChart
+GetConnection() : connection
+FindCustomers() : List
+CreateChart() : void
+DisplayChart() : void

重构后类关系图

DBUtil:连接数据库
CustomerDAO:操作数据库 增删改查
CustomerDataChart:负责图表的生成和显示

CustomerDataChart
-dao:CustomerDAO
+CreateChart() : void
+DisplayChart() : void
CustomerDAO
-util:DBUtil
+FindCustomers() : List
DBUtil
+GetConnection() : connection

例二: 日志类 功能实现

  /// <summary>
    /// 日志类  
    /// </summary>
    public class Journal
    {
        private readonly List<string> entries = new List<string>();
        private static int count = 0;
        public int AddEntry(string text)
        {
            entries.Add($"{++count}: {text}");
            return count;
        }
        public void RemoveEntry(int index)
        {
            entries.RemoveAt(index);
        }
        public override string ToString()
        {
            return string.Join(Environment.NewLine, entries);
        }

        //public void Save(string filename)
        //{
        //    File.WriteAllText(filename, ToString());
        //}

        public static Journal Load(string filename)
        {
            Journal j = new Journal();
            string[] strContent=  File.ReadAllLines(filename);
            foreach(string s in strContent)
            {
                j.AddEntry(s);
            }
            return j;
        }
        public static Journal Load(Uri uri)
        {
            WebRequest wr = WebRequest.Create(uri);
            Journal j = new Journal();
            j.AddEntry(wr.GetResponse().ContentType);
            return j;
        }

    }

    public class Persistence
    {
        public void SaveToFile(Journal j, string filename, bool overwrite = false)
        {
            if (overwrite || !File.Exists(filename))
                File.WriteAllText(filename, j.ToString());
        }

    }

调用示例

            var j = new Journal();
            j.AddEntry("Hello,C++");
            j.AddEntry("Hello,C#");
            Console.WriteLine(j);

            string filename = @"D:\\0720.txt";
            var p = new Persistence();
            p.SaveToFile(j, filename, true);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
单一职责原则(Single Responsibility Principle,SRP)是面向对象设计中的一个重要原则。它要求一个类或模块应该只负责完成一个职责或功能。换句话说,一个类应该只有一个引起它变化的原因。 在Java中,我们可以通过以下几种方式来遵循单一职责原则: 1. 将不同的职责分离到不同的类中:将一个类中的多个职责拆分成多个类,每个类只负责一个职责。这样可以提高代码的可维护性和可扩展性。 2. 使用接口进行解耦:通过定义接口,将不同的职责分离开来,使得类之间的依赖关系更加松散。这样可以降低类之间的耦合度,提高代码的灵活性。 3. 使用设计模式设计模式是一种经过验证的解决特定问题的方案。在遵循单一职责原则时,可以使用一些设计模式,如策略模式、观察者模式等,来将不同的职责分离开来,使得代码更加清晰和可维护。 下面是一个示例代码,演示了如何在Java中遵循单一职责原则: ```java // 负责处理用户信息的类 class UserInfoHandler { public void saveUserInfo(UserInfo userInfo) { // 保存用户信息的逻辑 } } // 负责发送邮件的类 class EmailSender { public void sendEmail(String email, String message) { // 发送邮件的逻辑 } } // 负责生成报表的类 class ReportGenerator { public void generateReport(List<Data> dataList) { // 生成报表的逻辑 } } ``` 在上面的示例中,我们将处理用户信息、发送邮件和生成报表这三个不同的职责分别放在了不同的类中,每个类只负责完成一个职责。这样可以使得代码更加清晰和易于维护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值