摘要: 定义 迪米特法则(Law of Demeter, LoD)是1987年秋天由lan holland在美国东北大学一个叫做迪米特的项目设计提出的,它要求一个对象应该对其他对象有最少的了解,所以迪米特法则又叫做最少知识原则(Least Knowledge Principle, LKP)。 意义 迪米特法 阅读全文
posted @ 2020-05-04 23:08 李代先 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 定义 经常又叫做合成复用原则(Composite ReusePrinciple或CRP),尽量使用对象组合,而不是继承来达到复用的目的。 就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新对象通过向这些对象的委派达到复用已有功能的目的。简而言之,要尽量使用合成/聚合,尽量不要使用继 阅读全文
posted @ 2020-05-04 23:02 李代先 阅读(378) 评论(0) 推荐(0) 编辑
摘要: 1.定义 工厂方法模式(FACTORY METHOD)是一种常用的类创建型设计模式,此模式的核心精神是封装类中变化的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。它的核心结构有四个角色,分别是抽象工厂;具体工厂;抽象产品;具体产品。 2.模式简介 工厂 阅读全文
posted @ 2020-05-04 22:55 李代先 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 观察者模式(Observer) 观察者一般可以看做是第三者,比如在学校上自习的时候,大家肯定都有过交头接耳、各种玩耍的经历,这时总会有一个“放风”的小伙伴,当老师即将出现时及时“通知”大家老师来了。再比如,拍卖会的时候,大家相互叫价,拍卖师会观察最高标价,然后通知给其它竞价者竞价,这就是一个观察者模 阅读全文
posted @ 2020-05-04 22:40 李代先 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 一、什么是依赖倒置原则 一种表述: 抽象不应当依赖于细节;细节应当依赖于抽象。 另一种表述: 要针对接口编程,不要针对实现编程。 针对接口编程的意思就是说,应当使用Java接口和抽象Java类进行变量的类型声明、参量的类型声明、方法的返回类型声明,以及数据类型的转换等。 不要针对实现编程的意思就是说 阅读全文
posted @ 2020-05-02 09:14 李代先 阅读(1028) 评论(0) 推荐(0) 编辑
摘要: 定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 总结:用抽象构建框架,用实现扩展细节 优点:提高软件系统的可复用性及可维护性 假设场景:接口A里面定义了一个书本的基本信息,但是具体是什么书我们暂时不知道,用抽象来构建框架 代码实现: 1.定义接口–Ibook用接口来抽象定义一本书的大 阅读全文
posted @ 2020-05-02 08:57 李代先 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 1 定义 适配器模式,作为连接两个接口的桥梁。这个概念感觉有点那啥,很少用接口的朋友可能就没有什么感觉,经常面向接口编程的朋友比较能产生共鸣,简单来说,就是写一个适配器(转换器)来对接对象。 使用前提或场景:解决两个已有接口间不兼容问题。Client面向接口编程,而该面向的接口又与第三方接口不兼容, 阅读全文
posted @ 2020-04-08 00:23 李代先 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 问题:某软件公司欲开发一个数据格式转换工具,可以将不同数据源如txt文件、数据库、Excel表格中的数据转换成XML格式。为了让系统具有更好的扩展性,在未来支持新类型的数据源,开发人员使用工厂方法模式设计该转换工具的核心类,客户端只需使用工厂类即可获得具体的转换类对象,再调用其相应方法实现数据转换操 阅读全文
posted @ 2020-03-24 15:06 李代先 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 一、依赖 可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A。表现在代码层面,类A当中使用了类B,其中类B是作为类A的方法参数、方法中的局部变量、或者静态方法调用。注意,要避免双向依赖。一般来说,不应该存在双向依赖。 二、关联 阅读全文
posted @ 2020-03-17 21:40 李代先 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 一、软件系统的可维护性 软件开发是一个比较快速的过程,一般只需要半年时间。但是系统的维护却是一个长期的过程,需要很多年。并且在一个软件项目的周期内,花费在维护上面的钱,是花费在原始开发上面的钱的两倍。 作为一个开发人员必须要认识到,软件的维护就是软件的再生。一个好的软件设计,必须能够允许新的设计要求 阅读全文
posted @ 2020-03-15 15:04 李代先 阅读(1203) 评论(0) 推荐(0) 编辑