
设计模式
retemin
脑子不好就多努力一点
展开
-
设计模式概述
设计模式的目的代码可重用性(相同功能的代码,不用多次编写)可读性(编程规范性)可扩展性(增加新的功能时,非常方便,可维护)可靠性(增加新的功能,对原来的功能没有影响)使程序呈现高内聚,低耦合的特性设计模式的七大原则单一职责原则接口隔离原则依赖倒转(倒置)原则里氏替换原则开闭原则(OCP)迪米特法则合成复用1、单一职责原则基本介绍:对类来说,即一个类应该只负责...原创 2020-02-08 18:48:28 · 230 阅读 · 0 评论 -
代理模式
基本介绍代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象。好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。被代理的对象可以是远程对象,创建开销大的对象或需要安全控制的对象代理模式有不同的形式,主要有三种 静态模式,动态代理模式(JDK代理,接口代理)和Cglib代理(可以在内存动态地创建对象,而不需要实现接口)UML类图如...原创 2020-02-07 17:07:43 · 179 阅读 · 0 评论 -
适配器模式
基本介绍适配器模式(Adapter Pattern) 将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,将原本接口不匹配不能一起工作的两个类可以协调工作,别名是包装器(Wrapper)适配器模式属于结构型模式(没有产生新的对象)主要有三类:类适配器模式,对象适配器模式,接口适配器模式工作原理适配器模式:将一个类的接口转换成另一种接口,让原本接口不兼容的类可以兼容从...原创 2020-02-06 17:36:51 · 184 阅读 · 0 评论 -
原型模式
问题描述现在有一只羊tom,姓名为tom,年龄为1,颜色为白色,请编写程序创建和tom属性完全相同的10只羊传统思维直接new出一个对象优点:比较好理解,简单易操作缺点:在创建新的对象的时候,总是需要重新获取原始对象的属性,如果创建的对象比较复杂时,效率低。总是需要重新初始化对象,而不是动态的对象运行时的状态,不够灵活使用原型模式概括原型模式是指:用原型实例指定创建对象的...原创 2020-02-05 20:33:40 · 211 阅读 · 0 评论 -
观察者模式
概述观察者模式是对象间多对一依赖的一种设计方案,被依赖的对象为Subject,依赖的对象为Observer,Subject通知bserver变化。也就是开闭原则例子需求气象站可以每天测量到温度,湿度,气压等以公告的形式发布出去。需要设计开放型api,便于其他第三方也可以接入气象台获取数据提供温度,湿度,气压的接口测量数据更新时,实时通知第三方传统思维创建一个WeatherDa...原创 2020-02-05 10:29:27 · 130 阅读 · 0 评论 -
抽象工厂模式
概述抽象工厂模式定义一个interface用于创建相关或者有依赖关系的对象簇,而无需指明具体的类抽象工厂模式可以将简单工厂模式和工厂方法模式进行整合抽象工厂模式是简单工厂模式的改进(进一步抽象)将工厂抽象成两层,AbstractFactory和集体实现的工厂子类,程序员可以根据创建对象类型使用对应的工厂子类,这样将单个的简单工厂变成工厂簇,更利于代码的维护和扩展。实例Pizza抽象...原创 2020-02-03 21:39:21 · 113 阅读 · 0 评论 -
工厂方法模式
概述工厂方法模式:定义一个创建对象的抽象方法,由子类决定要实例化的类,工厂方法模式将对象的实例化推迟到子类。工厂方法模式将工厂抽象起来,让其子类去实现。工厂方法模式可以比作:生产 - 工厂 - 消费每一个工厂有一个总部,分部的工厂就是实现类,每个实现类都有自己对应的生产类型实例pizza的实现类,创建一个抽象类,另外还有继承了抽象类的具体pizza实现定义一个抽象工厂,其定义了Pi...原创 2020-02-03 14:24:06 · 112 阅读 · 0 评论 -
单例模式(静态内部类实现方式)
使用静态内部类实现懒加载class Singleton7{ //私有构造器 private Singleton7(){ } //编写静态内部类,该类中有一个静态属性Singleton, //这个类加载的时,内部类不会加载,实现懒加载的方式 private static class SingletonInstance{ private...原创 2020-02-03 10:15:35 · 378 阅读 · 0 评论 -
简单工厂模式
概述定义:定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。在简单工厂模式中用于创建实例的方法通常是静态的方法,简单工厂模式又被称为静态工厂模式实例使用简单工厂模式,使得可以生产不同的pizza,如cheesePizza,GreekPizza等不同的Pizza,每一个Pizza都需要进行准备材料,做,切,打包等工作。创建一个简单工厂,工厂的逻辑...原创 2020-02-03 10:14:25 · 168 阅读 · 0 评论 -
单例模式之枚举
利用枚举实现单例模式enum Singleton8{ INSTANCE; public void sayOk(){ System.out.println("ok~"); }}借助jdk1.5新加的枚举,可以避免多线程问题,还可以防止反序列化重新创建新的对象。可以使用此种方法。单例模式在JDK源码中的体现public class Runtime {...原创 2020-02-02 10:30:08 · 260 阅读 · 0 评论 -
单例模式之懒汉式
采用懒加载的方式获取实例class Singleton3{ private static Singleton3 instance; private Singleton3(){ } //提供一个静态公有的方法,当使用的时候才实例化,实现懒汉式加载 public static Singleton3 getInstance(){ if(insta...原创 2020-02-01 11:21:29 · 134 阅读 · 0 评论 -
单例模式(静态常量)
单例模式的实现方式1,饿汉式静态常量方式通过返回一个静态常量,实现对象的单一形式class Singleton{ //构造器私有化,只能是类内部能new private Singleton(){ } //本地内部类创建实例 private final static Singleton instance = new Singleton(); //设置一个公...原创 2020-02-01 10:21:02 · 706 阅读 · 0 评论