基础设计原则(1. 单一职责原则)

概述

合理应用基础的设计,使项目代码结构清晰,保持低耦合高内聚,能够快速的梳理类之间的关系,忽略细节因素,提升对项目整体的认知,减少团队沟通成本,交接成本。时长思考这些,从这些简单的做起,同时有助于看懂他人代码。

五大原则

单一职责原则SRPSimple Responsibility Principle):

一个类,最好只做一件事,只有一个引起它变化的原因。如果一个类具有了多个职责,则之间就可能产生状态依赖。依据实际情况,此时就可以考虑重构此类。

见示例:

定义接口:

public interface IAction
    {
        bool Add();
        bool Sub();
}

加入抽象类

public class AbstractAction : IAction
    {
        public virtual bool Add()
        {
            return false;
        }

        public virtual bool Sub()
        {
           return false;
        }
    }

实现类,此类中在Add、Sub方法实现中融合了其他规则判断Canxxx,后面一旦判断规则改变则需要修改此类.更好的设计是将判断移出去,单独在一个类中实现,这样指责就更明确。

public class Calc : AbstractAction
    {
        public override bool Add()
        {
            if (CanAdd())
                return DoCalcAdd();
            else
                return false;
        }

        private bool CanAdd()
        {
            throw new NotImplementedException();
        }

        private bool DoCalcAdd()
        {
            throw new NotImplementedException();
        }

        public override bool Sub()
        {
            if (CanSub())
                return DoCalcSub();
            else
                return false;
        }

        private bool CanSub()
        {
            throw new NotImplementedException();
        }

        private bool DoCalcSub()
        {
           throw new NotImplementedException();
        }
    }

可以使用Proxy模式,加入新的判断类,这样Calc类只需要关注自身的业务逻辑操作。

public class CalcProxy:AbstractAction
    {
        private AbstractAction abstractAction;
        public CalcProxy(AbstractAction abstractAction)
        {
            this.abstractAction = abstractAction;
        }

        public override bool Add()
        {
            if (CanAdd())
                return abstractAction.Add();
            return false;
        }

        private bool CanAdd()
        {
            throw new NotImplementedException();
        }

        public override bool Sub()
        {
            if (CanSub())
               return abstractAction.Sub();
            return false;
        }

        private bool CanSub()
        {
            throw new NotImplementedException();
        }
    }

总结

合理使用单一职责,提升代码工整,职责更加分明。也可以使用Façade模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值