随笔分类 - 算法与设计 / 设计模式
摘要:Java的集合类-HashMap就使用了组合模式 # 编写测试代码 public class HashMapComp { public static void main(String[] args) { // TODO Auto-generated method stub Map<Integer,S
阅读全文
摘要:问题 编写程序展示一个学校院系结构:要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系 OrganizationComponent可以是接口、抽象类、具体的类 OrganizationComponent聚合到University OrganizationComponent聚合到
阅读全文
摘要:1个学校中有多个学院,1个学院中有多个系 传统方案解决学校院系展示问题 1) 将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的 2) 实际上我们的要求是 :在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系, 因此这种方案,不能很好实现的管理的操作,
阅读全文
摘要:Java的IO结构,FilterInputStream就是一个装饰者 1. InputStream 是抽象类, 类似我们前面讲的 Drink 2. FileInputStream 是InputStream子类,类似我们前面的 DeCaf, LongBlack 3. FilterInputStream
阅读全文
摘要:简介 1) 装饰者模式:动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则(ocp) 2) 这里提到的动态的将新功能附加到对象和ocp原则 原理 1) 装饰者模式就像打包一个快递 主体:比如:陶瓷、衣服 (Component) // 被装饰者 包装:比如:报
阅读全文
摘要:星巴克咖啡订单项目 1) 咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式咖啡)、Decaf(无因咖啡) 2) 调料:Milk、Soy(豆浆)、Chocolate 3) 要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便 4) 使用OO
阅读全文
摘要:Jdbc的 Driver 接口,如果从桥接模式来看,Driver 就是一个接口,下面可以有 MySQL 的 Driver,Oracle 的Driver,这些就可以当做实现接口类 桥接模式的注意事项和细节 1) 实现了抽象和实现部分的分离,从而极大的提供了系统的灵活性,让抽象部分和实现部分独立开来,这
阅读全文
摘要:手机操作问题 现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网,打电话等) 如果用代码实现,需要写很多重复的类 1) 扩展性问题(类爆炸),如果我们再增加手机的样式(旋转式),就需要增加各个品牌手机的类,同样如果我们增加一个手机品牌,也要在各个手机样式类下增加。 2) 违反了单一职责
阅读全文
摘要:查看DispatcherServlet public class DispatcherServlet extends FrameworkServlet { // 通过HandlerMapping来映射Controller mappedHandler = getHandler(processedReq
阅读全文
摘要:简介 1) 一些书籍称为:适配器模式(Default Adapter Pattern)或缺省适配器模式。 2) 当不需要全部实现接口提供的方法时,可先设计一个抽象类实现接口,并为该接口中每个方法提供一个默认实现(空方法),那么该抽象类的子类可有选择地覆盖父类的某些方法来实现需求 3) 适用于一个接口
阅读全文
摘要:简介 1) 基本思路和类的适配器模式相同,只是将Adapter类作修改,不是继承src类,而是持有src类的实例,以解决兼容性的问题。 即:持有 src类,实现 dst 类接口,完成src->dst的适配 2) 根据“合成复用原则”,在系统中尽量使用关联关系来替代继承关系。 3) 对象适配器模式是适
阅读全文
摘要:简介 Adapter类,通过继承 src类,实现 dst 类接口,完成src->dst的适配 案例分析 充电器本身相当于Adapter,220V交流电相当于src (即被适配者),我们的目dst(即 目标)是5V直流电 代码实现 package com.atguigu.adapter.classad
阅读全文
摘要:简介 1) 适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper) 2) 适配器模式属于结构型模式 3) 主要分为三类:类适配器模式、对象适配器模式、接口适配器
阅读全文
摘要:编写测试类 package com.atguigu.jdk; public class Builder { public static void main(String[] args) { // TODO Auto-generated method stub StringBuilder string
阅读全文
摘要:代码实现 package com.atguigu.builder.improve; //产品->Product public class House { private String baise; private String wall; private String roofed; public
阅读全文
摘要:简介 1) 建造者模式(Builder Pattern) 又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。 2) 建造者模式 是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以
阅读全文
摘要:盖房项目需求 1) 需要建房子:这一过程为打桩、砌墙、封顶 2) 房子有各种各样的,比如普通房,高楼,别墅,各种房子的过程虽然一样,但是要求不相同 代码实现 package com.atguigu.builder; public abstract class AbstractHouse { //打地
阅读全文
摘要:浅拷贝介绍 1) 对于数据类型是基本数据类型的成员变量,浅拷贝会直接进行值传递,也就是将该属性值复制一份给新的对象。 2) 对于数据类型是引用数据类型的成员变量,比如说成员变量是某个数组、某个类的对象等,那么浅拷贝会进行引用传递,也就是只是将该成员变量的引用值(内存地址)复制一份给新的对象。 因为实
阅读全文
摘要:创建1个spring项目 package com.atguigu.spring.bean; public class Monster { private Integer id = 10 ; private String nickname = "牛魔王"; private String skill =
阅读全文
摘要:使用原型模式改进传统方式,让程序具有更高的效率和扩展性 代码实现 package com.atguigu.prototype.improve; public class Sheep implements Cloneable { private String name; private int age
阅读全文