设计模式Java实现(二)

适配器模式

当我们有一个可以立即使用的类时,由于不符合客户端使用的接口时,我们需要创建一个适配器(adpter),以使当前可用的类能够被客户端对象使用。而在适配已有类时,存在两种方法,一种是通过继承的方式来适配,一种是通过引用(组合)的方式来适配,前者叫类适配,而后者加对象适配。

适配器的两种Java实现在这里可以下载

以下是类适配的UML类图:


以下是对象适配的UML类图:



构建模式

构建模式是创建模式的一种,该模式有点类似与抽象工厂模式,不同的构建对象构建不同的产品,但构建模式与抽象工厂模式不同在于,构建模式是一步步构建出被构建对象的,即产品对象。

以下是构建模式的Java实现(点击这里下载)。

以下是构建模式的UML类图:




合成模式

合成模型(composite)将对象组织在树形结构中,可以用来描述整体与局部的关系,客户端可以将单纯元素和复合元素统一看待。

这里是合成模式Java实现的代码下载(点击下载

合成模式有两种实现方式,两种实现方式的最重要的区别就在于对非叶子节点的操作是否对客户端透明,对客户端透明,那么客户端就不会感知到叶子节点和非叶子节点的不同,那么需要将对非叶子节点的操作定义到component接口中,但由于这些操作只是针对非叶子节点的,所以对于叶子节点是没有任何意义的,但由于接口已经定义在了component中,所以,所有的叶子节点都将于实现一次对于自己来说没有意义的方法。这即是透明式,以下是类设计图:


另外一种实现方式就是区别对待叶子节点和非叶子节点,在component接口中仅仅定义了对叶子节点和非叶子节点都有意义的操作,而对非叶子节点才有意义的操作,单独定义在非叶子节点上。这样实现的方式的好处是,对客户端式安全的,不会由于在叶子节点对象上调用到不该调用的方法(这里指定义在非叶子节点上的方法),缺点即是,客户端会感知到存在不同的实现节点,即叶子节点和非叶子节点,以下是该实现的类设计图:




装饰模式

装饰模式(Decorator)是以对客户端透明的方式对对象功能的一种扩展,是基础方式的一种更好的替代方案。装饰模式的优点在于,装饰模式扩展对象比基础方式灵活,同时由很多小的装饰对象,可以组合出很多不同的对象行为。装饰模式的优点也是其缺点,首先,由于装饰模式比对象继承更加灵活,所以需要产生大量的小对象,即装饰对象本身,另外,就是由于其灵活性,导致出错的可能性更高,不通过的装饰结果,可能出现与预期不符的对象扩展。

装饰模型的Java实现代码点击这里下载

装饰模式的UML类图如下:



java设计模式大体上分为三大类: 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。 行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式设计模式遵循的原则有6个: 1、开闭原则(Open Close Principle)   对扩展开放,对修改关闭。 2、里氏代换原则(Liskov Substitution Principle)   只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。 3、依赖倒转原则(Dependence Inversion Principle)   这个是开闭原则的基础,对接口编程,依赖于抽象而不依赖于具体。 4、接口隔离原则(Interface Segregation Principle)   使用多个隔离的借口来降低耦合度。 5、迪米特法则(最少知道原则)(Demeter Principle)   一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。 6、合成复用原则(Composite Reuse Principle)   原则是尽量使用合成/聚合的方式,而不是使用继承。继承实际上破坏了类的封装性,超类的方法可能会被子类修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值