admin 管理员组文章数量: 887021
2023年12月22日发(作者:easyui软件学习心得)
java常用的设计模式及代码实现
Java是一种广泛使用的编程语言,它提供了许多设计模式来解决不同的软件设计问题。设计模式是一些通用的解决方案,可以在软件开发中重复使用。本文将介绍一些常用的Java设计模式,并提供相应的代码实现。
一、单例模式
单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点。单例模式通常用于管理共享资源,例如数据库连接池或线程池。下面是一个单例模式的代码实现:
```java
public class Singleton {
private static Singleton instance;
private Singleton() {
// 私有构造方法,防止外部实例化
}
public static Singleton getInstance() {
if (instance == null) {
synchronized () {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
```
二、工厂模式
工厂模式是一种创建型设计模式,它提供了一种将对象的创建与使用分离的方法。工厂模式可以根据不同的条件创建不同的对象,而不需要在代码中直接实例化对象。下面是一个工厂模式的代码实现:
```java
public interface Shape {
void draw();
}
public class Circle implements Shape {
@Override
public void draw() {
n("绘制圆形");
}
}
public class Rectangle implements Shape {
@Override
public void draw() {
n("绘制矩形");
}
}
public class ShapeFactory {
public static Shape createShape(String type) {
if (("circle")) {
return new Circle();
} else if (("rectangle")) {
return new Rectangle();
}
return null;
}
}
```
三、观察者模式
观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,使得多个观察者对象同时监听某一个主题对象。主题对象在状态发生变化时,会通知所有的观察者对象进行更新。下面是一个观
察者模式的代码实现:
```java
public interface Observer {
void update(String message);
}
public class User implements Observer {
private String name;
public User(String name) {
= name;
}
@Override
public void update(String message) {
n(name + " 收到消息: }
}
public interface Subject {
void addObserver(Observer observer);
void removeObserver(Observer observer);
void notifyObservers(String message);
}
" + message);
public class WeChat implements Subject {
private List
@Override
public void addObserver(Observer observer) {
(observer);
}
@Override
public void removeObserver(Observer observer) {
(observer);
}
@Override
public void notifyObservers(String message) {
for (Observer observer : observers) {
(message);
}
}
}
```
以上是三种常用的Java设计模式及其相应的代码实现。单例模式用于确保类只有一个实例;工厂模式用于根据不同条件创建对象;观
察者模式用于实现一对多的依赖关系。这些设计模式可以帮助我们更好地组织和管理代码,提高代码的可维护性和可扩展性。在实际的软件开发中,我们可以根据具体的需求选择合适的设计模式来解决问题。
版权声明:本文标题:java常用的设计模式及代码实现 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1703245451h443874.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论