展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

随笔分类 -  算法与设计

摘要:MyBatis 中的Configuration 去创建MetaObject 对象使用到外观模式 public class Configuration { protected ReflectorFactory reflectorFactory = new DefaultReflectorFactory 阅读全文
posted @ 2022-08-31 14:50 DogLeftover 阅读(43) 评论(0) 推荐(0)
摘要:1) 外观模式可以理解为转换一群接口,客户只要调用一个接口,而不用调用多个接口才能达到目的。 比如:在pc上安装软件的时候经常有一键安装选项(省去选择安装目录、安装的组件等等),还有就是手机的重启功能(把关机和启动合为一个操作) 2) 外观模式就是解决多个复杂接口带来的使用困难,起到简化用户操作的作 阅读全文
posted @ 2022-08-31 14:48 DogLeftover 阅读(23) 评论(0) 推荐(0)
摘要:组建一个家庭影院: DVD播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的功能,其过程为: • 直接用遥控器:统筹各设备开关 • 开爆米花机 • 放下屏幕 • 开投影仪 • 开音响 • 开DVD,选dvd • 去拿爆米花 • 调暗灯光 • 播放 • 观影结束后,关闭各种设备 传 阅读全文
posted @ 2022-08-31 14:42 DogLeftover 阅读(44) 评论(0) 推荐(0)
摘要:Java的集合类-HashMap就使用了组合模式 # 编写测试代码 public class HashMapComp { public static void main(String[] args) { // TODO Auto-generated method stub Map<Integer,S 阅读全文
posted @ 2022-08-31 13:51 DogLeftover 阅读(28) 评论(0) 推荐(0)
摘要:问题 编写程序展示一个学校院系结构:要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系 OrganizationComponent可以是接口、抽象类、具体的类 OrganizationComponent聚合到University OrganizationComponent聚合到 阅读全文
posted @ 2022-08-31 13:42 DogLeftover 阅读(29) 评论(0) 推荐(0)
摘要:1个学校中有多个学院,1个学院中有多个系 传统方案解决学校院系展示问题 1) 将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的 2) 实际上我们的要求是 :在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系, 因此这种方案,不能很好实现的管理的操作, 阅读全文
posted @ 2022-08-31 13:38 DogLeftover 阅读(25) 评论(0) 推荐(0)
摘要:Java的IO结构,FilterInputStream就是一个装饰者 1. InputStream 是抽象类, 类似我们前面讲的 Drink 2. FileInputStream 是InputStream子类,类似我们前面的 DeCaf, LongBlack 3. FilterInputStream 阅读全文
posted @ 2022-08-31 11:53 DogLeftover 阅读(33) 评论(0) 推荐(0)
摘要:简介 1) 装饰者模式:动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则(ocp) 2) 这里提到的动态的将新功能附加到对象和ocp原则 原理 1) 装饰者模式就像打包一个快递 主体:比如:陶瓷、衣服 (Component) // 被装饰者 包装:比如:报 阅读全文
posted @ 2022-08-31 11:32 DogLeftover 阅读(29) 评论(0) 推荐(0)
摘要:星巴克咖啡订单项目 1) 咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式咖啡)、Decaf(无因咖啡) 2) 调料:Milk、Soy(豆浆)、Chocolate 3) 要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便 4) 使用OO 阅读全文
posted @ 2022-08-31 11:27 DogLeftover 阅读(129) 评论(0) 推荐(0)
摘要:Jdbc的 Driver 接口,如果从桥接模式来看,Driver 就是一个接口,下面可以有 MySQL 的 Driver,Oracle 的Driver,这些就可以当做实现接口类 桥接模式的注意事项和细节 1) 实现了抽象和实现部分的分离,从而极大的提供了系统的灵活性,让抽象部分和实现部分独立开来,这 阅读全文
posted @ 2022-08-31 11:01 DogLeftover 阅读(43) 评论(0) 推荐(0)
摘要:手机操作问题 现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网,打电话等) 如果用代码实现,需要写很多重复的类 1) 扩展性问题(类爆炸),如果我们再增加手机的样式(旋转式),就需要增加各个品牌手机的类,同样如果我们增加一个手机品牌,也要在各个手机样式类下增加。 2) 违反了单一职责 阅读全文
posted @ 2022-08-31 11:00 DogLeftover 阅读(145) 评论(0) 推荐(0)
摘要:查看DispatcherServlet public class DispatcherServlet extends FrameworkServlet { // 通过HandlerMapping来映射Controller mappedHandler = getHandler(processedReq 阅读全文
posted @ 2022-08-31 10:19 DogLeftover 阅读(37) 评论(0) 推荐(0)
摘要:简介 1) 一些书籍称为:适配器模式(Default Adapter Pattern)或缺省适配器模式。 2) 当不需要全部实现接口提供的方法时,可先设计一个抽象类实现接口,并为该接口中每个方法提供一个默认实现(空方法),那么该抽象类的子类可有选择地覆盖父类的某些方法来实现需求 3) 适用于一个接口 阅读全文
posted @ 2022-08-31 10:13 DogLeftover 阅读(69) 评论(0) 推荐(0)
摘要:简介 1) 基本思路和类的适配器模式相同,只是将Adapter类作修改,不是继承src类,而是持有src类的实例,以解决兼容性的问题。 即:持有 src类,实现 dst 类接口,完成src->dst的适配 2) 根据“合成复用原则”,在系统中尽量使用关联关系来替代继承关系。 3) 对象适配器模式是适 阅读全文
posted @ 2022-08-31 10:08 DogLeftover 阅读(59) 评论(0) 推荐(0)
摘要:简介 Adapter类,通过继承 src类,实现 dst 类接口,完成src->dst的适配 案例分析 充电器本身相当于Adapter,220V交流电相当于src (即被适配者),我们的目dst(即 目标)是5V直流电 代码实现 package com.atguigu.adapter.classad 阅读全文
posted @ 2022-08-31 10:04 DogLeftover 阅读(36) 评论(0) 推荐(0)
摘要:简介 1) 适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper) 2) 适配器模式属于结构型模式 3) 主要分为三类:类适配器模式、对象适配器模式、接口适配器 阅读全文
posted @ 2022-08-30 16:12 DogLeftover 阅读(20) 评论(0) 推荐(0)
摘要:编写测试类 package com.atguigu.jdk; public class Builder { public static void main(String[] args) { // TODO Auto-generated method stub StringBuilder string 阅读全文
posted @ 2022-08-30 15:51 DogLeftover 阅读(65) 评论(0) 推荐(0)
摘要:代码实现 package com.atguigu.builder.improve; //产品->Product public class House { private String baise; private String wall; private String roofed; public 阅读全文
posted @ 2022-08-30 15:33 DogLeftover 阅读(26) 评论(0) 推荐(0)
摘要:简介 1) 建造者模式(Builder Pattern) 又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。 2) 建造者模式 是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以 阅读全文
posted @ 2022-08-30 15:29 DogLeftover 阅读(20) 评论(0) 推荐(0)
摘要:盖房项目需求 1) 需要建房子:这一过程为打桩、砌墙、封顶 2) 房子有各种各样的,比如普通房,高楼,别墅,各种房子的过程虽然一样,但是要求不相同 代码实现 package com.atguigu.builder; public abstract class AbstractHouse { //打地 阅读全文
posted @ 2022-08-30 15:22 DogLeftover 阅读(22) 评论(0) 推荐(0)