
20春软件构造
weixin_44744335
在下小学生码云
展开
-
软件构造——关于Map的KeySet和values方法
文章目录写在前面KeySet()方法values()方法解决方法 写在前面 在这段时间的复习和做题过程,我经常用到List,Set和Map这三个数据结构,前两个都属于容器类,我比较熟悉,而每当我使用到Map的一些方法时,我就有些不放心了,因此这篇文章主要介绍一下我对Map两个方法的疑惑与解决。 KeySet()方法 众所周知,这个方法是用来获取Map内部的包含Key的一个集合。 其spec是这么说的 Returns a Set view of the keys contained in this map原创 2020-07-09 16:56:23 · 724 阅读 · 0 评论 -
软件构造——从SOLID五大原则的角度看OOP
写在前面:由于已经复习了一遍,本文将通过SOLID五大原则以及各种设计模式的角度来对OO编程与设计做一个感受与总结。 对于OOP,我们有很多关键词在脑海中,我也是。想起OOP,我会想到它的抽象操作,它的分离机制,它对于实现的封装,对于多个类的继承机制,为多个子类的情况而设计的多态机制。 文章目录抽象抽象是啥?抽象的用处OCP怎么做?好处?LSP由于抽象协变与逆变由于多态DIP高层、低层抽象与实现策略模式的一个深刻例子继承分离与封装用处ISP什么时候用?好处RSP何时适用?好处? 抽象 抽象是啥? 抽象,.原创 2020-06-26 09:28:42 · 225 阅读 · 0 评论 -
软件构造——单例模式的目的、实现与线程安全
前言:课上并未对单例模式进行详细的介绍,因此本篇博客介绍一下关于单例模式的一些内容。 文章目录单例模式(Singleton Pattern)目的(Q&A)实现线程安全如何解决? 单例模式(Singleton Pattern) 目的(Q&A) Q:我们为什么需要这个模式? A:因为有时候我们需要的是一个独一无二的对象,这个对象只有一个实例,我们在不同时段调用这个实例时希望这个实例具有“记忆”(个人看法)。 Q:那么哪些对象是需要具有独一无二这种特性的呢? A:有很多,比如缓存,注册表,在现.原创 2020-06-25 10:40:07 · 138 阅读 · 0 评论 -
软件构造-关于java.util.Arrays.asList方法
很原创 2020-06-04 21:24:39 · 343 阅读 · 0 评论 -
软件构造(8)对try-catch-finally的疑问与解决
在上课的过程中,有讲到finally中的return会在catch中return后继续执行,那么是否finally中的语句都会被执行?这个问题是值得探究的。通过查找资料和实践,我解决了这个疑问 首先,我们知道不略是否catch到异常,finally语句都是会执行的,那么有没有不执行到的情况呢? 情况一 try { System.exit(0); throw new Exception(); } finally { System.out.prin.原创 2020-05-22 11:18:54 · 158 阅读 · 0 评论 -
软件构造(7)错误与异常处理
本节是对6.2节的一个总结,便于日后复习 6.1主要说明了Robustness and Correctness(Reliability)的重要性,下面主要介绍异常处理,断言,防御式编程的具体操作。 1 Error and Exception in Java 由上图可知,Error和Exception都是继承于Throwable接口,其中Error和RuntimeException是Unchecked Exception;Exception中除了RuntimeException之外的都是Checked E原创 2020-05-15 15:35:24 · 491 阅读 · 0 评论 -
软件构造(6)面向可维护性的构造技术
本章是对5.3节的一个总结,便于日后复习 这一节主要讲了基于状态的构造技术和基于语法的构造技术。 1.基于状态的构造技术 根据当前状态,决定下一步要执行什么操作、执行操作之后如何转移。 1.1 基于自动机的编程 思想:把程序看做是一个优先状态自动机,对“状态”和“状态转换”进行抽象和编程 方式:将IXUS的执行分解为一组自动执行的步骤,各个步骤之间的通讯通过“状态变量”来进行,把程序的执行看做事各自动步骤的不断循环。 Tips:可以使用枚举类型或其他数据结构去定义状态,对于状态转移表,一般使用二维数组。原创 2020-05-15 11:19:52 · 281 阅读 · 0 评论 -
软件构造(5)面向可维护性的设计模式
本章为对5.2节的一个总结,便于日后复习。 1 Creational patterns(关于如何“创建类的新实例”) 1)Factory Method pattern(工厂方法模式) “除了使用new操作符之外,还有更多制造对象的方法,你将了解到这个活动不应该总是公开地进行,也会认识到初始化经常造成“耦合”问题。”——《Design Patterns》 工厂方法模式就像一个“虚拟构造器”,通过定义一个创建对象的接口,让该接口的子类型来决定实例化哪一个类,从而使一个类的实例化延迟到其子类。 当client不原创 2020-05-12 17:05:32 · 221 阅读 · 0 评论 -
软件构造(4) 复用——行为模式
震惊!继结构模式,又一模式横出江湖!一起跟着小编来康康吧~ 策略模式(Strategy) 适用场合 当你有多种算法来实现同一个任务,但需要根据client动态切换算法。 比如,当有二维数组和邻接表两种实现方式来存储一个图的vertex和edge时,程序能够识别边和点的关系,来判断是稀疏图还是密集图,从而更好的实现。 又比如,你需要排序一组数据,客户是用冒泡还是归并,亦或是快排? 思想 可以为不同...原创 2020-04-23 20:08:31 · 138 阅读 · 0 评论 -
软件构造(3)复用——构造型模式
本文为4.3部分(Deisin Patterns for Reuse)的笔记 设计模式更强调多个**类**、**对象**之间的**关系**和**交互**过程 1.结构型模式(Structural patterns) 1.1 适配器模式(Adapter) 适用场景 类之间的接口不兼容 思想 通过增加一个接口,将实现的子类封装起来,让client面向接口编程(相当于一根HDMI的数据线想接一个VG...原创 2020-04-23 16:38:20 · 192 阅读 · 0 评论 -
软件构造(2)-泛型及类型擦除
泛型的概念 泛型事实上就是将类型参数化的一种方式。在我们定义一些类、方法或接口时,我们不仅可以将一些普通参数传入,而且还可以将某一类型作为参数传入。我认为,由于不知道传入的具体类型是什么,可以广泛的表示一系列的类型,所以叫做泛型。 泛型的由来 JDK5之前是没有泛型的,泛型的诞生有其意义。 List arrayList = new ArrayList(); arrayList.add("aaaa"...原创 2020-04-04 14:33:02 · 189 阅读 · 0 评论 -
软件构造(1)海龟绘图问题7——对凸包问题的分析、困惑与解决
此处是链接<----MIT海龟绘图 1.问题描述 Problem 7: Convex hulls Implement convexHull, which computes the convex hull, the smallest convex set that contains all the points in a set of input points. The gift-wrappi...原创 2020-03-03 20:33:17 · 325 阅读 · 0 评论