设计模式
依然核桃
多写一点是一点
展开
-
Java类之间的关联关系
UML类图中的关系分为四种:泛化、依赖、关联、实现;关联关系又可以细化为聚合和组合。一、泛化(Generalization)泛化是父类和子类之间的关系,子类继承父类的所有结构和行为。在子类中可以增加新的结构和行为,也可以覆写父类的行为。一般用一个带空心箭头的实线表示泛化关系,UML图如下:泛化对应Java中继承关系,即子类继承父类中出private修转载 2016-07-09 10:12:54 · 537 阅读 · 0 评论 -
设计模式(八)——模板方法模式
来明确下概念吧,模板方法的写法是这样,准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现,这就是模板方法模式的用意。模板方法模式需要开发抽象类和具体子类的设计师之间的协作。一个设计师负责给出一个算法的轮廓和骨架,另一些设计师则负责给出这个算法的各个逻辑步骤。代表这些具体逻辑步骤的方法称做基本方法(primitive method);而将这些基本方法汇总起来的方法叫做模板方法(t2012-07-17 16:51:09 · 62 阅读 · 0 评论 -
设计模式(七)——门面模式
接口,这个接口使得这一子系统更加容易使用。简而言之,就是把一堆复杂的流程封装成一个接口供给用户更简单的使用,这个设计模式里有三个角色:1)门面角色( facade ):这是门面模式的核心。它被客户角色调用,因此它熟悉子系统的功能。它内部根据客户角色已有的需求预定了几种功能组合。 2)子系统角色(subsystem):实现了子系统的功能。对它而言, façade 角色就和客户角色一样是未知的,它没有任何 façade 角色的信息和链接。 3)客户角色:调用 façade 角色来完成要得到的功能。2012-07-10 13:35:54 · 66 阅读 · 0 评论 -
设计模式(六)——抽象工厂模式
抽象工厂模式,听名字也知道应该是与工厂模式是一脉相承的,顾名思义就是将工厂模式抽象化了,是的,木有错,就是这样,实质上就是在具体产品和具体实现工厂与各自接口中间再加入了一个抽象类,这样做有什么好处?废话,没好处我闲的那什么疼要多加一层?现在不说,写完一看就知道,然后这里引入两个专业概念:产品等级,产品族。其实很好理解,先记着,用到的时候讲。我们接着上一讲的例子,仍然是老板要造汽车,现在的情况是,老板有间汽车工厂,可以造奥迪和奔驰车,但是老板想,奥迪和奔驰有各种不同型号的车嘛,是的,那。。。我也不是卖车的2012-07-09 15:15:43 · 81 阅读 · 0 评论 -
设计模式(五)——工厂方法模式
法使一个类的实例化延迟到其子类。工厂方法模式的优点 1. 工厂方法模式可以降低模块间的耦合性,使用工厂方法模式创建一个对象,不再需要知道创建该对象的艰辛过程和必要信息,只需要提供一个产品的约束条件(例如,类名或约束字符串)就可以获取需要的对象。 2. 工厂方法有良好的扩展性。 3. 屏蔽了产品类,调用者只需要关系产品类的接口。因为产品类的具体对象实例是由工厂产生的。 假设如下场景:有一个汽车工厂,老板想要生产各种类型汽车,他不想管你们怎么生产,他只给工厂工作人员一个汽2012-07-04 14:52:12 · 96 阅读 · 0 评论 -
设计模式(四)——多例模式
特点:1、多例类可以有多个实例2、多例类必须能够自我创建并管理自己的实例,并向外界提供自己的实例。典型的例子就是数据库线程池,下面我就模拟一下用户取得线程池中连接的简化场景:先设计这个产生连接的类package com.gy.designpattern.multition;import java.util.ArrayList;import java.util.Random;/** * ClassName:MyConnections <br/&g2012-07-04 13:30:29 · 94 阅读 · 0 评论 -
设计模式(三)——单例模式
例的创建都放在该类中,并且只有一份,这里不假设具体的场景了,直接看代码就好: public class SingletonPattern { private static SingletonPattern singletonPattern= null; //限制住不能直接产生一个实例 private SingletonPattern(){ } public SingletonPattern getInstance(){ if(this.singletonPatt2012-07-04 11:10:06 · 62 阅读 · 0 评论 -
设计模式(一)——策略模式
2012-07-04 09:49:54 · 52 阅读 · 0 评论 -
设计模式(二)——代理模式
2012-07-03 19:52:01 · 60 阅读 · 0 评论 -
设计模式(一)——策略模式
原创 2012-07-03 19:38:49 · 63 阅读 · 0 评论 -
单例模式
/** * 一、懒汉,常用的写法 */class LazySingleton{ private static LazySingleton singleton; private LazySingleton(){ } public static LazySingleton getInstance(){ if(singleton==null){转载 2016-07-09 18:49:00 · 278 阅读 · 0 评论 -
简单工厂、工厂方法、抽象工厂
结合简单示例和UML图,讲解工厂模式简单原理。 一、引子话说十年前,有一个爆发户,他家有三辆汽车(Benz(奔驰)、Bmw(宝马)、Audi(奥迪)),还雇了司机为他开车。不过,爆发户坐车时总是这样:上Benz车后跟司机说“开奔驰车!”,坐上Bmw后他说“开宝马车!”,坐上 Audi后他说“开奥迪车!”。你一定说:这人有病!直接说开车不就行了?!而当把这个爆发户的行为放转载 2016-07-09 18:42:41 · 553 阅读 · 0 评论 -
面向对象七大设计原则
1:开闭原则(Open for Extension,Closed for Modification) 就是对程序修改关闭,对程序扩展开放。就是在不改变一个程序源码的情况下 改变程序的行为。如何做到既不修改,又可以扩展? 解决问题的关键在于抽象化:在Java语言里,可以给出一个或多个抽象Java类或Java接口,规定出所有的具体类必须提供的方法特征作为系统设计的抽象层。这个抽象层预见了所原创 2016-07-09 15:17:38 · 485 阅读 · 0 评论 -
设计模式(九)——适配器模式
2012-08-24 17:47:42 · 102 阅读 · 0 评论