资讯详情

设计模式 (一)设计模式七大原则,UML 基本介绍

目录

  • 1 七大设计模式原则
    • 1.1 单一职责原则
    • 1.2 接口隔离原则
    • 1.3 依靠倒转原则
      • 1.3.1 依赖关系传递的三种方式
    • 1.4 替氏替换原则
      • 1.4.1 问题
      • 1.4.2 解决
    • 1.5 开闭原则
    • 1.6 迪米特法则
    • 1.7 合成复用原则
  • 2 UML 基本介绍
    • 2.1 依赖
    • 2.2 泛化
    • 2.3 实现
    • 2.4 关联
    • 2.5 聚合
    • 2.6 组合

1 七大设计模式原则

● 1)单一职责原则 ● 2)接口隔离原则 ● 3)依赖倒转原则 ● 4)里氏替换原则 ● 5)开闭原则 ● 6)迪米特法则 ● 7)合成复用原则

1.1 单一职责原则

对于类别,一个类别应该只负责一个责任。例如,类A负责两种不同的责任:责任1和责任2。当责任1需要改变并改变A时,责任2可能会导致执行错误,因此需要将类A的粒度分解为A1,A2

● 1)降低类的复杂性,一类只负责一项责任 ● 2)提高可读性和可维护性 ● 3)降低变化引起的风险 ● 4)一般来说,我们应该遵守单一责任原则。只有逻辑足够简单,我们才能在代码级违反单一责任原则;只有当类中的方法数量足够少时,才能在方法级别保持单一责任原则

1.2 接口隔离原则

客户端不应依赖其不需要的接口,即一个类对另一个类的依赖应基于最小的接口

1.3 依靠倒转原则

● 1)高层模块不应该依赖低层模块,二者都应该依赖其抽象 ● 2)抽象不应依赖细节,而应依赖细节 ● 3) ● 4)依靠倒转原则是基于这样的设计理念:抽象的东西比细节的多变性稳定得多。基于抽象的结构比基于细节的结构稳定得多。java抽象是指接口或抽象,细节是具体的实现类 ● 5)

总之:  例如,参数是接口类型 
1  如果不使用这个原则,所以参数是特定的类,所以我们只能使用特定的类对象    对象中的方法也是特定的,所以不好 2  我们可以写一个界面,在界面中定义一种方法,让其他类别实现界面并重写    里面的方法,作为参数,有很多实现类 

● 1)低层模块尽量都要有抽象类或接口,或者两者都有,程序稳定性更好 ● 2)变量的声明类型应尽可能抽象或接口,以便在我们的变量引用和实际对象之间存在缓冲层,有利于程序扩展和优化 ● 3)继承遵循里氏替代原则

1.3.1 依赖关系传递的三种方式

1 接口传递

//方法1:依赖于接口传输 //开关接口 interface IOpenAndClose { 
             void open(ITV tv);///抽象法,接收接口 } //ITV接口 interface ITV { 
             void play(); } //实现接口 class OpenAndClose implements IOpenAndClose { 
             public void open(ITV tv){ 
                 tv.play();     } } 

2 传递结构方法

//方法2:依赖构造函数 //开关接口 interface IOpenAndClose { 
             void open();///抽象方法 } //ITV接口 interface ITV { 
        
    public void play();
}
//实现接口
class OpenAndClose implements IOpenAndClose { 
        
    private ITV tv; // 成员
    
    public OpenAndClose(ITV tv){ 
         // 构造器
        this.tv = tv;
    }
    
    public void open(){ 
        
        this.tv.play();
    }
}

3 setter 方式传递

//方式3,通过setter方法传递
interface IOpenAndClose{ 
        
    void open();//抽象方法
    void setTv(ITV tv);
}
//ITV接口
interface ITV{ 
        
    void play();
}
//实现接口
class OpenAndClose implements IOpenAndClose{ 
        
    private ITV tv;
    public void setTv(ITV tv){ 
        
        this.tv=tv;
    }
    public void open(){ 
        
        this.tv.play();
    }
}

1.4 里氏替换原则

在使用继承时,遵循里氏替换原则,在子类中尽量不要重写父类的方法

1.4.1 问题

如果有的人就想重写父类里面的方法,咋办

1.4.2 解决

将方法提取出来到一个新类里面,比如C 是新类,让A ,B 继承C ,重写C里面的方法就可以了

  • 1 如果 即使变成这样,A还是想用B里面的方法咋办 在A 类里面创建B的对象,自己新写一个方法,里面使用B里面的方法

1.5 开闭原则

我们一般在新增功能的时候,一般要修改代码,但是这个原则是尽量少修改,要新增代码,而不是修改原来的代码;

抽象类+接口 实现功能

1.6 迪米特法则

迪米特法则又叫最少知道原则,即一个类对自己依赖的类知道的越少越好。

1.7 合成复用原则

原则是尽量使用合成/聚合的方式,而不是使用继承;

2 UML 基本介绍

类之间的关系:

2.1 依赖

只要是在类中用到了对方,那么他们之间就存在依赖关系。如果没有对方,连编译都通过不了; 比如一个A类里面,属性是B类

● 1)类中用到了对方
● 2)类的成员属性
● 3)方法的返回类型
● 4)方法接收的参数类型
● 5)方法中使用到

2.2 泛化

泛化关系实际上就是,它是依赖关系的特例

● 1)泛化关系实际上就是继承关系
● 2)如果 A 类继承了 B 类,我们就说 A 和 B 存在泛化关系

2.3 实现

就是实现接口,它是依赖关系的特例

2.4 关联

它是依赖关系的特例;

关联关系实际上就是类与类之间的联系; 单向一对一; 双向一对一;

2.5 聚合

一个整体可以分离出来单独使用

2.6 组合

不能分离出来单独使用,共生共灭

标签: itv液压螺旋连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司