• 软件设计模式学习1


    面向对象语言的三大特征:继承封装多态

    软件设计模式的概念

    软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。

    这是来自百度百科的概念 我们通过学习软件设计模式可以给我们带来啥呢?
    1. 提高我们的思维能力,编程能力和设计能力
    2. 是程序设计更加标准化,代码编制更加工程化,是软件开发效率大大提高,从而缩短软件的开发周期
    3. 式设计的代码可重用性高、让代码更容易被他人理解、保证代码可靠性、程序的重用性。

    软件设计模式的基本要素

    1. 模式名称
    2. 问题
    3. 解决方案
    4. 效果

    GoF的23种设计模式

    这里我们先不将太深,只作为一个引子!!!
    在后面的文章中我们将尽享深入的讲解
    设计模式的两种分类方法
    根据目的
    创建型模式:用于描述怎样创建对象
    结构型模式:用于面熟如何将类或对象按某种布局构成更大的结构
    行为型模式:描述类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,以及分配职责。
    根据作用范围
    类模式
    主要用于处理类与子类之间的关系。
    对象模式
    用于处理对象之间的关系

    范围目的 创建型模式 结构型模式 行为型模式
    类模式 工厂方法 (类) 适配器 模板方法,解释器
    对象模式 单例
    原型
    抽象工厂
    创建者
    代理
    (对象)适配器
    桥接
    装饰
    外观
    享元
    组合
    策略
    命令
    职责链
    状态
    观察者
    中介者
    迭代器
    访问者
    备忘录

    此次博客的重点

    UML类图
    类 接口 类图


    1. 定义:具有相同属性,方法和关系的对象的抽象。类与对象之间的关系,类是对象的抽象化,对象是类的实例化。类封装了数据和行为,是面向对象的基础。
      在UML类图中表示方法为
      Java中权限修饰符可以分为四种:private public protected friendly。他们在类图中分别表示为 - + # ~
      类中属性在UML图中表示为:[权限符] 属性名 :属性类型 [=默认值]
      行为表示方法:[权限符] 函数名(参数列表) [:返回类型]

    在这里插入图片描述

    1. 接口:特殊的类,只有行为,但不可以实现,只能被其子类实现

    在这里插入图片描述

    1. 类图用来显示系统中的类接口协作以及它们之间的静态结构和关系的一种静态模型。

    在这里插入图片描述

    我们已经知道了类图是如何画出来了,那么我们该怎么去用代码实现它呢 ,下面我们接着看类之间的关系

    如图
    在这里插入图片描述
    在这里插入图片描述

    接下来我们就分析一下图1.3的类图

    Client为使用类,Graph为被依赖项
    Rectangle和Circular实现了Graph中的方法
    具体代码如下

    public class Client {
        public void calculate(Graph tx){
            
        }
    }
    
    
    public class Circular implements Graph {
        private double radius;
        public double getArea(){
            return 3.1415926*this.radius*this.radius;
        }
    public double getPerimeter(){
            return 2*3.1415926*this.radius;
    }
    }
    
    
    public class Rectangle implements Graph {
        private double length;
        private double width;
        public double getArea(){
            return this.length*this.width;
        }
        public double getPerimeter(){
            return 4*(this.width+this.length);
        }
    
    
    }
    
    
    interface Graph {
        public double getArea();
        public double getPerimeter();
    }
    
  • 相关阅读:
    机器学习经验帖
    C++面试问题收集
    js事件
    js数据类型
    js鼠标拖拽事件
    BOM事件浏览器滚动条
    IIS发布.netcore需要安装dotnethosting
    电脑访问小米路由器
    win11设置默认浏览器(适用于「按链接」和「按文件类型」,可解决从阿里旺旺中打开时用edge打开页面的问题)
    uniapp自定义基座或发行中出现SDK版本不匹配弹框处理
  • 原文地址:https://www.cnblogs.com/gaochunhui/p/11700622.html
Copyright © 2020-2023  润新知