Java实践(四)---程序设计模式

设计模式 ——可复用面向对象软件的基础

设计模式(Designpattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性

毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样

设计模式分类

类/对象 创建型 结构型 行为型
Factory Method(工厂方法) Adapter_Class(适配器类) Interpreter(解释器)
Template Method(模板方法)
对象 Abstract Factory(抽象工厂) Adaptor_Object(适配器对象) Chain of Respinsibility(职责链)
Builder(生成器) Bridge(桥接) Command(命令)
prototype(原型) Composite(组合) Iterator(迭代器)
Singleton(单例) Decorator(装饰) Mediator(中介者)
Facade(外观) Memento(备忘录)
Flyweight(享元) Observer(观察者)
Proxy(代理) State(状态)
Strategy(策略)
Visitor(访问者)

单例模式

在某些情况下,有些对象只需要一个就可以了,即每个类只需要一个实例;单例模式的作是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个;单例模式确保某一个类只有一个实例,而且自行实例化,并向整个西戎提供这个实例单例模式

public class Singleton {
    private Singleton(){};
    private static Singleton uniqueInstance = new Singleton();

    public static Singleton getUniqueInstance() {
        return uniqueInstance;
    }
}

使用这种方法实现的单例模式,在类被加载的时候就会实例化这个类的一个对象,由于在使用之前对象就已经被创建好,因此在多线程环境下使用这种方法,如果采用按需实例化的方法,就需要考虑多线程的同步问题。

工厂模式

工厂模式专门负责实例化有大量公共接口的类,工厂模式可以动态的决定将哪一个类实例化,而不必实现知道每次要实例化哪一个类

1、简单工厂模式(Simple Factory),简单工厂模式的过程来是根据提供给它的参数,返回的几个可能产品中的一个类的实例
2、工厂方法模式(Factory Method),工厂方法模式是类的创建模式,其用意是定义一个用于创建产品对象的工厂的接口,而将实际创建工作推迟到工厂接口的子类中
3、抽象工厂模式(Abstract Factory),抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态,抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式,向客户端提供一个借接口,使客户端不必指定产品的具体的情况下,创建多个产品族中的产品对象

适配器模式

适配器模式也称为变压器觅食,把一个类的接口转换成客户端所期望的另一种接口,从而使原本因接口不匹配而无法一起工作的两个类能够一起工作

适配器模式主要用于,想要复用一些已经存在的类,但是接口又与复用环境要求不一致的情况,在遗留代码复用、类库迁移等方面非常有用

观察者模式

观察者魔兽也称为发布\订阅模式,提供了避免组件之间紧密耦合的另一种方法,它将观察者和被观察者的对象分离开来

在该模式中,一个对象通过添加一个方法(该方法有哪些另一个对象,即观察者注册自己)使本身变得可观察,当观察的对象更改时,它会将消息发送到已注册的观察者;这些观察者使用该信息执行的操作与观察的对象无关

设计模式的六大原则

1、开闭原则(Open Close Principle)

对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果

2、里氏代换原则(Liskov Substitution Principle)

面向对象设计的基本原则之一。任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为

3、依赖倒转原则(Dependence Inversion Principle)

开闭原则的基础,针对接口编程,依赖于抽象而不依赖于具体

4、接口隔离原则(Interface Segregation Principle)

使用多个隔离的接口,比使用单个接口要好。降低类之间的耦合度

5、迪米特法则(最少知道原则)(Demeter Principle)

一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立

6、合成复用原则(Composite Reuse Principle)

尽量使用合成/聚合的方式,而不是使用继承

你可能感兴趣的:(Java)