设计模式-5-适配器模式
适配器模式
适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper) .是作为两个不兼容的接口之间的桥梁
属于结构型模式,它结合了两个独立接口的功能。
意图:
将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
主要解决:
主要解决在软件系统中,常常要将一些”现存的对象”放到新的环境中,而新环境要求的接口是现对象不能满足的。
如何解决:
继承或依赖(推荐)。
关键代码:
适配器继承或依赖已有的对象,实现想要的目标接口。
应用实例:
美国电器 110V,中国 220V,就要有一个适配器将 110V 转化为 220V
JAVA JDK 1.1 提供了 Enumeration 接口,而在 1.2 中提供了 Iterator 接口,想要使用 1.2 的 JDK,则要将以前系统的 Enumeration 接口转化为 Iterator 接口,这时就需要适配器模式
在 LINUX 上运行 WIND ...
设计模式-4-建造者模式
建造者模式
建造者模式使用多个简单的对象一步一步构建成一个复杂的对象
属于创建型模式,它提供了一种创建对象的最佳方式
一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。
建造者模式(Builder Pattern) 又叫生成器模式,是一种对象构建模式。可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。
建造者模式是一步一步创建一个复杂的对象,允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节
意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。
何时使用:
一些基本部件不会变,而其组合经常变化的时候。
如何解决:
将变与不变分离开。
关键代码:建造者:创建和提供实例,导演:管理建造出来的实例的依赖关系。
应用实例:
去肯德基,汉堡、可乐、薯条、炸鸡翅等是不变的,而其组合是经常变化的,生成出所谓的”套餐”。
JAVA 中的 StringBuilder。
优点:
建造者独立,易扩展
便于控制细节风险。
缺点 ...
设计模式-3-原型模式
原型模式
原型模式是用于创建重复的对象,同时又能保证性能。
属于创建型模式,它提供了一种创建对象的最佳方式之一。
这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。
意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
主要解决:在运行期建立和删除原型。
如何解决:利用已有的一个原型对象,快速地生成和原型对象一样的实例。
关键代码:
实现克隆操作,在 JAVA 实现 Cloneable 接口,重写 clone()
原型模式同样用于隔离类对象的使用者和具体类型(易变类)之间的耦合关系,它同样要求这些”易变类”拥有稳定的接口。
优点:
性能提高
逃避构造函数的约束。
缺点:
配备克隆方法需要对类的功能进行通盘考虑,这对于全新的类不是很难,但对于已有的类不一定很容易,特别当一个类引用不支持串行化的间接对象,或者引用含有循环结构的时候
必须实现 Cloneable 接口
使用场景:
资源优化场景
类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等
性能和安全要求的场景
通过 new 产生一 ...
设计模式-2-工厂模式
工厂模式工厂模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。
主要解决:主要解决接口选择的问题。
何时使用:我们明确地计划不同条件下创建不同实例时。
如何解决:让其子类实现工厂接口,返回的也是一个抽象的产品。
关键代码:创建过程在其子类执行
优点:
一个调用者想创建一个对象,只要知道其名称就可以
扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以
屏蔽产品的具体实现,调用者只关心产品的接口。
缺点:
每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依
使用场景:
日志记录器:记录可能记录到本地硬盘、系统事件、远程服务器等,用户可以选择记录日志到什么地方
数据库访问,当用户不知道最后系统采用哪一类数据库,以及数据库可能有变化时。
设计一个连接服务器的框架,需要三个协议,”POP3” ...
设计模式-1-单例模式
单例模式单例模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
[案例] 比如 Hibernate 的SessionFactory,它充当数据存储源的代理,并负责创建 Session 对象。SessionFactory并不是轻量级的,一般情况下,一个项目通常只需要一个 SessionFactory 就够,这是就会使用到单例模式。
意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
主要解决:一个全局使用的类频繁地创建与销毁。
何时使用:当您想控制实例数目,节省系统资源的时候。
如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。
关键代码:构造函数是私有的。
使用场景:需要频繁的进行创建和销毁对象、创建对象时耗时过多或耗费资源过多(即:重量级对象),但又经常用到的对象、工具类对象、频繁访问数据库或文件的对象(比如数据源、session 工厂等)
优点:
在内存里只有一个实例,减少了内存的开销,尤 ...
Linux基础学习篇-1-Linux的规则与安装
主机规划与磁盘分区各种硬件设备在Linux中的文件名
常见目录
目录
含义
/bin
Binary的缩写,用来存二进制可执行文件,并且比较特殊的是/bin存放的是所有一般用户都能使用的可执行文件,如:cat、chmod、mv、mkdir、cd等常用指令
/sbin
Super User的意思,存放一些只有root用户才有权限执行的可执行文件,如init,ip,mount等命令
/boot
主要存放开机时用到的引导文件,如linux内核文件和开机菜单与开机所有需要的配置文件
/dev
device,任何设备都以文件的形式存放在这个目录中。例如硬盘、键盘、鼠标、光驱等各种设备文件。只要通过访问该目录的某个文件就相当于访问了对应的设备
/etc
包含所有程序所需的配置文件以及系统的配置文件,如用户的账号密码文件,各个服务的起始文件等。也包含了用于启动/停止单个程序的启动和关闭shell脚本。一般来说,该目录下的文件属性是可以让用户查阅,但只有root管理员有权利修改
/home
系统默认的用户的家目录,每当新建一个用户系统都会在这个目录下创建以该用户名为 ...