通用职责分配软件原则之3-低耦合原则

耦合是评价一个系统中各个元素之间连接或依赖强弱关系的尺度,具有低耦合的元素不过多依赖其他元素。此处的元素可以是类,也可以是模块、子系统或者系统。

C#设计模式概述

低耦合原则Low Coupling Principle

(1)问题

怎样支持低的依赖性,减少变更带来的影响,提高重用性?

(2)方案

分配一个职责,使得保持低耦合度。

(3)分析

耦合是评价一个系统中各个元素之间连接或依赖强弱关系的尺度,具有低耦合的元素不过多依赖其他元素。此处的元素可以是类,也可以是模块、子系统或者系统。具有高耦合的类过多地依赖其他类,这种设计将会导致:一个类的修改导致其他类产生较大影响;系统难以维护和理解;系统重用性差,在重用一个高耦合的类时不得不重用它所依赖的其他类。因此需要对高耦合的系统进行重构。

类A和类B之间的耦合关系体现如下:A具有一个B类型的属性;A调用B的方法;A的方法包含对B的引用,如方法参数类型为B或返回类型为B;A是B的直接或者间接子类;B是一个接口,A实现了该接口。低耦合模式鼓励在进行职责分配时不增加耦合性,从而避免高耦合可能产生的不良后果。在进行类设计时,需要保持类的独立性,减少类变更所带来的影响,它通常与信息专家原则和高内聚原则一起出现。为了达到低耦合,我们可以通过如下方式对设计进行改进:

1、在类的划分上,应当尽量创建松耦合的类,类之间的耦合度越低,就越有利于复用,一个处在松耦合中的类一旦被修改,不会对关联的类造成太大波及;
2、在类的设计上,每一个类都应当尽量降低其成员变量和成员函数的访问权限;
3、在类的设计上,只要有可能,一个类型应当设计成不变类(C#语言中为sealed或static);
4、在对其他类的引用上,一个对象对其他对象的引用应当降到最低。

示例

public sealed class Singleton {

    private static Singleton _instance = null;

    public static Singleton GetInstance() {
        if(_instance == null) {
            _instance = new Singleton();
            Console.WriteLine("Singleton.GetInstance()!");
        }

        return _instance;
    }

}

以上代码可在我的 C#设计模式 系列博文中创建型模式下的单例模式中找到。

Singleton类是一个单例类,它几乎没有任何业务耦合,使用sealed密封此类以防止被继承,_instance的访问权限为private,因为要尽可能的降低访问权限,它的引用由公开的GetInstance方法返回。

本文由 .Net中文网 原创发布,欢迎大家踊跃转载。

转载请注明本文地址:https://www.byteflying.com/archives/373

发表评论

登录后才能评论