龙空技术网

读Java8函数式编程笔记07_设计和架构的原则

躺着的柒 31

前言:

此刻兄弟们对“java执行系统命令函数”大体比较看重,兄弟们都想要了解一些“java执行系统命令函数”的相关文章。那么小编同时在网摘上搜集了一些有关“java执行系统命令函数””的相关知识,希望我们能喜欢,小伙伴们快快来学习一下吧!

读Java8函数式编程笔记07_设计和架构的原则

1.SOLID原则1.1.开发良好面向对象程序的准则1.2.Liskov substitution里氏替换1.3.Interface segregation接口隔离1.4.Single responsibility单一功能原则1.4.1.程序中的类或方法只能有一个改变的理由1.4.2.一个类不仅要功能单一,而且还需将功能封装好1.5.Open/closed开闭原则1.5.1.软件应该对扩展开放,对修改闭合1.5.1.1.让软件易于修改1.5.2.高阶函数在用多态来实现开闭原则1.5.3.使用不可变对象实现开闭原则1.6.Dependency inversion依赖反转原则1.6.1.抽象不应依赖细节,细节应该依赖抽象1.6.1.1.待依赖的抽象不必是接口1.6.2.让程序员脱离底层粘合代码,编写上层业务逻辑代码1.6.3.高阶函数提供了反转控制1.6.4.模块化和重用方式是双向的1.6.4.1.可以替换不同的细节重用上层代码1.6.4.2.可以替换不同的业务逻辑重用细节的实现2.不可变性2.1.观测不可变性2.1.1.在其他对象看来,该类是不可变的2.1.2.java.lang.String2.1.2.1.第一次调用hashCode方法时缓存了生成的散列值2.1.3.观测不可变性不意味着实现不可变性2.2.实现不可变性2.2.1.对象本身不可变2.2.2.实现不可变性意味着观测不可变性3.设计模式3.1.有些模式会变得过时3.2.Lambda能让很多现有设计模式更简单、可读性更强3.2.1.将大量代码塞进一个方法会让可读性变差是决定如何使用Lambda表达式的黄金法则4.单例模式4.1.应该避免使用的模式4.2.敏捷开发使其成了一个反模式5.命令者模式5.1.命令者是一个对象,它封装了调用另一个方法的所有细节5.2.使用该对象,可以编写出根据运行期条件,顺序调用方法的一般化代码5.3.函数接口Runnable5.4.宏只是使用命令者模式的一个例子,它被大量用在实现组件化的图形界面系统、撤销功能、线程池、事务和向导中5.5.使用Lambda表达式或是方法引用,能让代码更简洁,去除了大量样板代码,让代码意图更加明显6.策略模式6.1.能在运行时改变软件的算法行为6.2.定义一个通用的问题,使用不同的算法来实现,然后将这些算法都封装在一个统一接口的背后6.3.使用Lambda表达式或者方法引用可以去掉样板代码7.观察者模式7.1.可被Lambda表达式简化和改进的行为模式7.2.被观察者持有一个观察者列表。当被观察者的状态发生改变,会通知观察者。7.3.观察者模式被大量应用于基于MVC的GUI工具中,以此让模型状态发生变化时,自动刷新视图模块,达到二者之间的解耦8.模板方法模式8.1.整体算法的设计是一个抽象类,它有一系列抽象方法,代表算法中可被定制的步骤,同时这个类中包含了一些通用代码8.2.算法的每一个变种由具体的类实现,它们重写了抽象方法,提供了相应的实现8.3.将一组方法调用按一定顺序组织起来8.4.如果用函数接口表示函数,用Lambda表达式或者方法引用实现这些接口,相比使用继承构建算法,就会得到极大的灵活性8.4.1.使用函数接口实现方法并没有排除继承的方式9.领域专用语言(DSL)9.1.针对软件系统中某特定部分的编程语言9.1.1.比较小巧9.1.2.表达能力也不如通用语言强9.1.3.不求面面俱到,但求有所专长9.2.Domain-Specific Languages9.2.1.Martin Fowler和Rebecca Parsons合著9.2.2.Addison-Wesley出版社出版9.3.外部DSL9.3.1.脱离程序源码编写,然后单独解析和实现9.3.2.例如9.3.2.1.级联样式表(CSS)9.3.2.2.正则表达式9.4.内部DSL9.4.1.嵌入编写它们的编程语言中9.4.2.普通的类库,提供API方便使用9.4.3.例如9.4.3.1.JMock9.4.3.2.Mockito9.4.3.3.JOOQ9.4.3.4.Querydsl10.行为驱动开发(BDD)10.1.测试驱动开发(TDD)的一个变种10.2.它的重点是描述程序的行为,而非一组需要通过的单元测试

标签: #java执行系统命令函数