LXZ的原创知识库

记录,思考,成长,回忆


  • 首页

  • 分类

  • 归档

【Design pattern】设计模式系列(四)单例模式

发表于 2015-06-04 | 分类于 Design pattern

[Design pattern]: 设计模式相关系列

介绍

概念: 保证一个类仅有一个实例,并提供一个访问它的全局访问点。
使用场景: 整个项目中只能创建一次对象的类.防止出现多个对象同时存在.如:数据库连接池,有多个就不能有效控制连接数了.

两种实现方式

第一种

单例类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package note.com.singleton;

public class Singleton {
private static volatile Singleton singleton = null;
private Singleton(){
}

public static synchronized Singleton getSingleton(){//synchronized是必须的
if(singleton==null){
singleton = new Singleton();
}
return singleton;
}
}
阅读全文 »

【Design pattern】设计模式系列(三)生成器模式

发表于 2015-06-03 | 分类于 Design pattern

[Design pattern]: 设计模式相关系列

介绍

概念: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
例如: 衣服制造厂(实体)有制造衣服的功能,每种衣服的制造流程都不相同,因此把制造衣服这个复杂且可变的功能分离出来.
使用场景: 实体的某个功能复杂且不只有一种
好处: 功能的扩展不影响实体,实体更加内聚,与可变的部分耦合度低

CODE

生产过程接口

1
2
3
4
5
6
package note.com.builder;

public interface Builder {
public String build(Factory factory);

}
阅读全文 »

【Design pattern】设计模式系列(二)原型模式

发表于 2015-06-02 | 分类于 Design pattern

[Design pattern]: 设计模式相关系列

介绍

概念: 由对象来生成新的对象,而不是用类类型或其他方式.

使用场景: 需要对象克隆时

特点: 参数复制了,不用再初始化数据

原型模式在C++等其他语言中运用较广,JAVA有Object的clone方法,所以使用起来比较简单

假如Object中没有clone方法,怎么来实现原型模式?

CODE

首先创建对象实体 基类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package note.com.bean;

public abstract class Prototype {
private String name = null;

public abstract Prototype clone(Prototype p);

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}
阅读全文 »

【Design pattern】设计模式系列(一)工厂模式(三种)

发表于 2015-06-01 | 分类于 Design pattern

[Design pattern]: 设计模式相关系列

关系图

例子中需要构建的实体类代码省略

1,简单工厂模式:

概念: 静态的,对生成对象进行封装的类
使用场景: 去掉代码中new的操作, 统一生成对象的入口
好处: 当对对象进行替换时,只需要修改工厂类中的代码即可,使类的实例化代码与逻辑代码分离.

CODE

工厂类

1
2
3
4
5
6
7
8
9
10
11
12
package note.com.factory;

import note.com.bean.*;public class SimpleFactory {

public static A getA1(){
return new A1();
}

public static A getA2(){
return new A2();
}
}
阅读全文 »

【Design pattern】设计模式系列笔记的前言

发表于 2015-06-01 | 分类于 Design pattern

[Design pattern]: 设计模式相关系列

本系列为本人2015年间通过Java语言对常见设计模式的通俗化代码实现, 通过关系图降低理解难度.

概念和思路参考: <Head First设计模式>, 等

设计模式的由来

基于面向对象思想(抽象,继承,封装,多态),不断对好的设计进行总结,最后形成理论体系.通俗的讲,设计模式就是解决问题的方式.

读<Head First设计模式> 中提到设计原则:

  1. 封装变化。
  2. 多用组合少用继承。
  3. 针对接口编程,不针对实现编程。
  4. 为交互对象之间的松耦合设计而努力。
  5. 类应该对扩展开放,对修改关闭。
  6. 依赖抽象,不要依赖具体类。
  7. 只和朋友交谈。
  8. 别找我,我会找你。
  9. 类应该只有一个改变的理由。

如何学习设计模式

理解它的应用场景,解决了哪些问题,有什么好处,以及实现方式.
好的项目不是开始时就设计出来的,而是经过不断的修改完善而产生的.(这里并不代表开始就不用好好的设计)

接下来验证之前的现象和我得出的结论

分类

参考一书

根据使用目的分类:创建型,结构型,行为型

创建型:主要重点在于对象的实例化过程

具体有:抽象工厂(Abstract factory),生成器(Builder),工厂方法(Factory method),原型(Prototype),单件(Singleton)

结构型:主要重点在于如何组合类之间的关系,构建强大的结构

具体有:适配器(Adapter),桥接(Bridge),组合(Composite),装饰(Decorator),外观(Facade),享元(FlyWeight),代理(Proxy)

行为型:主要在于类与类之间的行为通信

具体有:职责链(Chain of reSponsibility),命令(Command),解释器(Interpreter),迭代器(Iterator),中介者(Mediator),备忘录(Memento),观察者(Observer),状态(State),策略(Strategy),模板方法(Template method),访问者(Visitor)

阅读全文 »
上一页1…56

55 日志
5 分类
1 标签
GitHub E-Mail
© 2016 — 2022 吕兴志
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4