随笔分类 - 设计模式
摘要:生产者/消费者问题是一个经典的线程同步以及通信的案例。该问题描述了两个共享固定大小缓冲区的线程,即所谓的“生产者”和“消费者”在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时
阅读全文
摘要:第一种(懒汉,线程不安全): Java代码 public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == null) { ...
阅读全文
摘要:架构模式是什么 软件架构模式,诞生于软件开发的最大难题——需求变更。由于需求变更,导致了大量项目因为超出预算的人力、时间而归于失败。软件开发成本有限的,但需求变更似乎是无限的,这成为了一个非常难解决的问题。 软件需求变更的结果,基本上就是对于软件代码的修改。而软件代码的修改却是程序员们最头疼的事情。
阅读全文
摘要:抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。 介绍 意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 主要解决:主要解决接口选择的问题。 demo:
阅读全文
摘要:介绍 意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。 主要解决:主要解决接口选择的问题。 何时使用:我们明确地计划不同条件下创建不同实例时。 如何解决:让其子类实现工厂接口,返回的也是一个抽象的产品。 关键代码:创建过程在其子类执行。 注意事项
阅读全文
摘要:1、开闭原则(Open Close Principle) 开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类。 2、里氏代换原则(Liskov S
阅读全文
摘要:3、目的着重点不同 三层架构的目的着重点是“高内聚,低耦合”,即解耦。 MVC的目的则是实现Web系统的职能分工,即职责划分。 其实职责划分也是解耦,但是三层侧重的是整体的一个解耦,而MVC侧重的是web系统的解耦,即侧重jsp和Servlet的一个解耦。
阅读全文
摘要:生产者/消费者问题的多种Java实现方式一: wait() / notify()方法 package com.etc.jichu; import java.util.LinkedList; /* * wait() / nofity()方法是基类Object的两个方法,也就意味着所有Java类都会拥有这两个方法,这样,我们就可以为任何对象实现同步机制。 wait()方法:当缓冲区已满/空时,生...
阅读全文
摘要:package com.etc.jichu; public class Singleton { //初始化为null的单例,用关键字volatile(不稳定的)修饰 private static volatile Singleton single=null; //私有的构造方法 private Singleton(){} public static Singleton getSin...
阅读全文
摘要:1、代理模式的定义:Provide a surrogate or placeholder for another object to controlaccess to it(为其他对象提供一种代理以控制对这个对象的访问)。使用代理模式创建代理对象,让代理对象控制目标对象的访问(目标对象可以是远程的对
阅读全文
摘要:在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之
阅读全文
摘要:一、概述将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。二、适用性1.当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 2.当构造过程必须允许被构造的对象有不同的表示时。三、参与者1.Builder 为创建一个Product对象的各个部件指定抽象接口。2
阅读全文
摘要:概念: Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。 单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自
阅读全文