单例模式:
定义:保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
特点:持久性单一对象。
实现:赋值给静态的对象。
备注:类的反射,等方法可以破解。
工厂模式:
定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类
特点:解耦,逻辑清晰。
实现:同一个接口
建造者模式:
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
特点:封装性好,适用于数据相同率比较高的创建模式中。
实现:导演类通过输入少量参数调用建造者类生产产品类对象。
原型模型:
定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象
特点:效率高。
实现:通过实体类实现CloneAble接口,编写方法调用接口中clone方法,通过字节码复制实现。
备注:深拷贝与浅拷贝问题中,会发生深拷贝的有java中的8中基本类型以及他们的封装类型,另外还有String类型。其余的都是浅拷贝
适配器模型:
定义:适配器模式是作为两个不兼容的接口之间的桥梁
特点:类的复用,灵活。
实现:在多个调用类与多个实现类之间作为一个关联关系。
桥接模型:
定义:桥接是用于把抽象化与实现化解耦,使得二者可以独立变化
特点:将抽象部分与实现部分分离,使它们都可以独立的变化。
实现:运行时绑定实体,通过接口调用接口。
过滤器模式:
定义:这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来
特点:高可用,低耦合,可任意重复调用,最后的结果一样。
实现:设立筛选条件。
组合模型:
定义:将对象组合成树形结构以表示"部分-整体"的层次结构。
特点:内部结构解耦,将复杂的单个元素转换成多个简单元素。
实现:根据关联关系分离,然后组合。
装饰模型:
定义:它是作为现有的类的一个包装。
特点:向一个现有的对象添加新的功能,同时又不改变其结构。
实现:可代替继承。
外观模型:
定义:外观模式隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口
特点:高封装。
实现:对接口进行封装。
亨元模型:
定义:运用共享技术有效地支持大量细粒度的对象。
特点:对象重用。
实现:在对象地址不变的情况下,改变对象内容。
代理模式:
定义:一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。
特点:访问限制。
实现:重载。
责任链模式:
定义:避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求。
特点:将低耦合
实现:子类与子类之间通过属性耦合,通过父类同一方法访问不同类对象。
命令模式:
定义:请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。
特点:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系
实现:封装请求类,通过调用任务类存储请求,执行请求对实体操作。
解释器模型:
定义:提供了评估语言的语法或表达式的方式,
特点:扩展性好。
实现:根据文法构建环境类进行类与类之间的关系处理。
迭代器模型:
定义:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。
特点:遍历一个聚合对象
中介者模式:
定义:是用来降低多个对象和类之间的通信复杂性
特点:降低类的复杂度,解耦合
实现:封装类类之间的交互。
观察者模式:
定义:义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
特点:高耦合
实现:改变一个对象,其他对象也跟着改变。
状态模式:
定义:许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。
特点:代替条件,分支语句
实现:状态包含行为,改变状态,就是改变对象。
策略模式:
定义:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。
特点:类多,扩展性好。
实现:封装策列类。
模板模式:
定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。
特点:重用父类的方法。
实现:方法绑定。
访问者模式:
定义:主要将数据结构与数据操作分离。
特点:扩展,单一职责。
实现:通过被访问者调用访问者,确定被访问者。