摘要:
目的:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。使用Decorator而不是继承的原因: 当需要扩展的功能的种类很多时,使用继承势必造成很多子类,增加系统的复杂性。经典例子: <<Head First Design Pattern>>里的咖啡吧例子。 基本咖啡有四种:HouseBlend,DarkRoast,Decaf,Espresso。 咖啡调味料四种:steamed milk, soy, mocha, whipped cream milk。 每种咖啡可以和一种或多种调味料混合形成新的咖啡。 此时如果使用继承,将会 阅读全文
摘要:
简单介绍: 工厂模式专门负责将大量有共同接口的类实例化。 工厂模式可以动态决定实例化哪一个类。不必事先知道每次要实例化哪个类。工厂模式的几种形态: 简单工厂(Simple Factory) 又称静态工厂模式 <由一个具体工厂类使用静态方法根据客户端传入的数据决定创建那种产品> [main] Product prod = Creator.factory(type1); 工厂方法(Factory Method) 又称多态性工厂模式或虚拟构造子模式(Virtual Constructor) <客户端首先决定创建哪种具体的工厂类,然后由工厂类创建具体的... 阅读全文
摘要:
这更多的是一个架构层面的模式,注重从架构的层次去看整个系统,而不是单个类的层次。目的是为一个复杂的系统提供一个统一的接口便于客户程序使用。可能的使用原因:1、原有系统非常复杂,客户程序可能只需要其中一部分功能,或是希望订制使用。2、提供统一的访问入口,限制客户程序对系统的全面访问。 使用Facade,可以监视系统的使用情况。3、提高系统的独立性,减少未来切换系统时对客户程序的影响。与其他模式的区别: Facade模式注重简化接口 Adapter模式注重转换接口 Bridge模式注重分离接口(抽象)与其实现 Decorator模式注重稳定接口的前提下为对象扩展功能例子:门卫通常需要抄作... 阅读全文
摘要:
1、泛型2、增强的For循环3、自动置入、取出(Autoboxing/unboxking)4、类型安全的枚举5、静态导入6、可变参数7、新的并发包 (新) java.util.concurrent java.util.concurrent.atomic java.util.concurrent.locks简单介绍如下:1、泛型 可以声明一个集合将要接收/返回的对象类型,从而获得编译时的类型安全,更小的可能抛出ClassCastException2、增强的For循环for (type element : array){ System.out.println(element);}3、... 阅读全文
摘要:
一级缓存: 就是Session级别的缓存。一个Session做了一个查询操作,它会把这个操作的结果放在一级缓存中。 如果短时间内这个session(一定要同一个session)又做了同一个操作,那么hibernate直接从一级缓存中拿,而不会再去连数据库,取数据。 它是内置的事务范围的缓存,不能被卸载。二级缓存: 就是SessionFactory级别的缓存。顾名思义,就是查询的时候会把查询结果缓存到二级缓存中。 如果同一个sessionFactory创建的某个session执行了相同的操作,hibernate就会从二级缓存中拿结果,而不会再去连接数据库。 这是可选的插件式的缓存,在... 阅读全文
摘要:
singleton作用域:当把一个Bean定义设置为singleton作用域是,Spring IoC容器中只会存在一个共享的Bean实例,并且所有对Bean的请求,只要id与该Bean定义相匹配,则只会返回该Bean的同一实例。值得强调的是singleton作用域是Spring中的缺省作用域。prototype作用域:prototype作用域的Bean会导致在每次对该Bean请求(将其注入到另一个Bean中,或者以程序的方式调用容器的getBean()方法)时都会创建一个新的Bean实例。根据经验,对有状态的Bean应使用prototype作用域,而对无状态的Bean则应该使用singleto 阅读全文
摘要:
创建模式:(5) 1、Simple Factory 2、Abstract Factory 3、Singleton 4、Builder 5、Prototype结构模式:(7) 1、Adaptor 2、Bridge 3、Composite 4、Decorator 5、Facade 6、Flyweight 7、Proxy行为模式:(11) 1、Chain of Responsibility 2、Command 3、Interpreter 4、Iterator 5、Memento 6、Mediator 7、Strategy 8、State 9、Observer... 阅读全文
摘要:
1、单一职责原则(Single Responsibility Principle,简称SRP) 单一职责原则,就一个类而言,应该仅有一个引起它变化的原因。这是高内聚的绝佳体现,如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会消弱或者一直这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。而软件设计真正要做的许多内容,就是发现职责,并把这些职责相互分离。2、 开放--封闭原则(The Open-Closed Principle,简称OCP) 开放--封闭原则,是说软件实体(类、模块、函数等等)应该可以扩展,但是不可以修改。即对于 阅读全文