设计模式
DeBuggggggg
厂里不让说
展开
-
设计模式之单例模式8种实现方式,其一:饿汉式-静态常量饿汉式
实现方式分为3步骤:1.构造方法私有化2.类的内部创建对象3.向外部暴露一个静态的公共方法实例:package singlePattern;public class SinglePattern1 { //类的内部创建对象 private static final SinglePattern1 singlePattern1 = new Si...原创 2019-07-29 12:11:41 · 238 阅读 · 0 评论 -
设计模式之简单工厂模式
基本介绍:1)简单工厂模式是属于创建型模式,是工厂模式的一种。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式2)简单工厂模式:定义了一个创建对象的类,由这个类来封装实例化对象的行为(代码)3)在软件开发中,当我们会用到大量的创建某种、某类或者某批对象时,就会使用到工厂模式4)改进的思路分析分析:修改代码可以接受,但是如果我...原创 2019-09-02 19:11:23 · 145 阅读 · 0 评论 -
设计模式之单例模式8种实现方式,其五:懒汉式(线程不安全,同步代码块)
实现方式:1.构造方法私有化2.创建类的静态变量,不实例化3.向外部暴露一个静态的公共方法,并判断是否存在实例,如果不存在,则实例化4.在公共方法的内部生成实例的代码块加上synchronized关键字(给该代码块加锁)案例:package singlePattern;public class SinglePattern5 { private SingleP...原创 2019-08-16 13:21:01 · 227 阅读 · 0 评论 -
设计模式之单例模式8种实现方式,其四:懒汉式(线程安全,同步方法)
实现方式:1.构造方法私有化2.创建类的静态变量,不实例化3.向外部暴露一个静态的公共方法,并判断是否存在实例,如果不存在,则实例化4.在外部暴露的公共方法上添加synchronized关键字(给该方法加锁)案例:package singlePattern;public class SinglePattern4 { private SinglePattern...原创 2019-08-16 13:13:38 · 207 阅读 · 0 评论 -
设计模式之单例模式8种实现方式,其八:枚举方式
实现方式:package singlePattern;enum Singleton{ INSTANCE; public void method(){ }}优缺点说明:1.这借助JDK1.5中添加的枚举来实现单例模式。不仅能避免多线程同步问题,而且还能防止反序列化重新创建新的对象2.这种方式是Effective JAVA 作者Josh Bloch提倡...原创 2019-08-24 22:12:13 · 272 阅读 · 0 评论 -
设计模式之单例模式8种实现方式,其七:静态内部类
实现方式:1.构造方法私有化2.创建静态内部类3.在静态内部类里面创建外面类的final修饰的实例4.通过静态共有方法去返回创建的实例代码如下:package singlePattern;public class SinglePattern7 { private SinglePattern7(){}; private static class Sin...原创 2019-08-24 21:58:02 · 165 阅读 · 0 评论 -
设计模式之单例模式8种实现方式,其六:双重检查
实现方式:1.构造方法私有化2.创建类的静态变量,不实例化,给该静态变量添加volatile关键字,设定instance为共享变量3.向外部暴露一个静态的公共方法,并判断是否存在实例,如果不存在,则实例化4.在公共方法的内部生成实例的代码块加上synchronized关键字(给该代码块加锁)案例:package singlePattern;public class S...原创 2019-08-24 21:44:04 · 199 阅读 · 0 评论 -
设计模式之单例模式8种实现方式,其三:懒汉式(线程不安全)
实现方式:1.构造方法私有化2.创建类的静态变量,不实例化3.向外部暴露一个静态的公共方法,并判断是否存在实例,如果不存在,则实例化案例:package singlePattern;public class SinglePattern3 { private SinglePattern3(){ } private static SinglePa...原创 2019-07-29 19:04:29 · 275 阅读 · 0 评论 -
设计模式之单例模式8种实现方式,其二:饿汉式-静态代码块饿汉式
饿汉式(静态代码块)应用步骤:1.构造器私有化2.创建类的静态变量,不实例化3.静态代码块实例化4.向外部暴露一个静态的公共方法案例:package singlePattern;public class SinglePattern2 { private SinglePattern2(){ } private final static Si...原创 2019-07-29 17:51:43 · 238 阅读 · 0 评论 -
设计模式的七大设计原则:其七:合成复用原则
合成复用原则(Composite Reuse Principle)基本介绍:原则是尽量使用合成/聚合的方式,而不是使用继承。设计原则核心思想:1.找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起2.针对接口编程,而不是针对实现编程3.为了交互对象之间的松耦合设计而努力...原创 2019-07-29 17:45:55 · 136 阅读 · 0 评论 -
设计模式的七大设计原则:其六:迪米特法则
迪米特法则:基本介绍:1.一个对象应该对其他对象保持最少的了解2.类与类关系越密切,耦合度越大3.迪米特法则(Demeter Principle)又叫最少知道原则,即一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类不管多么复杂,都尽量将逻辑封装在类的内部。对外除了提供的public方法,不对外泄露任何信息。4.迪米特法则还有个更简单的定义:只与直接的朋友通信5....原创 2019-07-29 17:17:25 · 183 阅读 · 0 评论 -
设计模式的七大设计原则:其五:开闭原则
开闭原则:基本介绍:1.开闭原则(Open Closed Principle)是编程中最基础,最重要的原则。2.一个软件实体如类,模块和函数应该对扩展开饭,对修改关闭。用抽象构建框架,用实现扩展细节。3.当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。4.编程中遵循其它原则,以及使用设计模式的目的就是遵循开闭原则。案例:1....原创 2019-07-29 14:11:18 · 198 阅读 · 0 评论 -
设计模式的七大设计原则:其四:里氏替换原则
里氏替换原则:OO中的继承性的思考和说明:1)继承包含这样一层含义:父类中凡是已经实现好的方法,实际上时在是设定规范和契约,虽然它不强制要求所有的子类必须遵循这些契约,但是如果子类对这些已经实现的方法任意修改,就会对整体继承体系造成破坏2)继承在给程序设计带来便利的同时,也带来弊端。比如使用继承会给程序带来侵入性,程序的可移植性降低,增加对象间耦合性,如果一个类被其他的类所继承,则当这...原创 2019-07-29 13:11:45 · 121 阅读 · 0 评论 -
设计模式的七大设计原则:其三:依赖倒转原则
依赖倒转原则:基本介绍:依赖倒转原则(Dependence Inversion Principle)是指:1.高层模块不应该依赖低层模块,二者都应该依赖其抽象2.抽象不应该依赖细节,细节应该依赖抽象3.依赖倒转(倒置)的中心思想是面向接口编程4.依赖倒转原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础的架构要稳定的多。...原创 2019-07-29 12:54:45 · 272 阅读 · 0 评论 -
设计模式的七大设计原则:其二:接口隔离原则
接口隔离原则:基本介绍:1.客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上2.先看一张图3.类A通过Interface1依赖类B,类C通过接口Interface1依赖类D,如果接口Interface1对于类A和类C来说不是最小接口,那么类B和类D必须去实现他们不需要的方法。4.按照接口隔离的原则应当这样处理:将接口Interface1拆分...原创 2019-07-29 12:29:59 · 148 阅读 · 0 评论 -
设计模式的七大设计原则:其一:单一职责原则
单一职责原则:单一职责原则注意事项和细节:1.降低类的复杂度,一个类只负责一项职责2.提高类的可读性,可维护性3.降低变更引起的风险4.通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则;只有类方法数量足够少,可以在方法级别保持单一职责原则。案例:1.在方式1的run 方法中,违反了单一职责原则,案例中飞机不能在公路上跑,而是在天空中...原创 2019-07-29 12:19:12 · 218 阅读 · 0 评论 -
设计模式之工厂方法模式
1.先参看简单工厂模式https://blog.csdn.net/u013294097/article/details/1002998072.案例详解:1)看一个新的需求:披萨项目不仅仅是有多品种,还有不同的地域,也就是有不同口味,和不同的地域2)思路分析:①使用简单工厂模式,创建不同的工厂类,比如BJPizzaSimpleFactory、LDPizzaSimpleFact...原创 2019-09-08 16:37:57 · 134 阅读 · 0 评论