优秀的设计模式java代码示例
设计模式是一种在软件开发中常用的解决问题的方法论,它为我们提供了一套通用的解决方案,可在各种情况下用于提高代码的可维护性、可拓展性和重用性。下面将介绍一些常见的设计模式,并提供相应的Java代码示例。
1. 单例模式(Singleton Pattern)
单例模式用于创建一个类的唯一实例,并提供全局访问点。下面是一个简单的单例模式代码示例:
```java
public class Singleton
private static Singleton instance;
private Singleto
//私有化构造方法,防止外部实例化
}
public static Singleton getInstanc
if (instance == null)
synchronized (Singleton.class)
if (instance == null)
instance = new Singleton(;
}
}
}
return instance;
}
```
2. 工厂模式(Factory Pattern)
工厂模式用于创建对象,通过一个工厂类封装对象的创建过程。下面是一个简单的工厂模式代码示例:
```java
public interface Animal
void eat(;
public class Dog implements Animal
java中常用的设计模式有哪些public void ea
System.out.println("Dog is eating.");
}
public class Cat implements Animal
public void ea
System.out.println("Cat is eating.");
}
public class AnimalFactory
public static Animal createAnimal(String type)
switch (type)
case "dog":
return new Dog(;
case "cat":
return new Cat(;
default:
throw new IllegalArgumentException("Invalid animal type: " + type);
}
}
```
3. 观察者模式(Observer Pattern)
观察者模式用于定义一种一对多的依赖关系,当一个对象状态发生改变时,所有依赖它的对象将自动得到通知。下面是一个简单的观察者模式代码示例:
```java
import java.util.ArrayList;
import java.util.List;
public interface Observer
void update(String message);
public class ConcreteObserver implements Observer
private String name;
public ConcreteObserver(String name)
this.name = name;
}
public void update(String message)
System.out.println(name + " received message: " + message);
}
public interface Subject
void addObserver(Observer observer);
void removeObserver(Observer observer);
void notifyObservers(String message);
public class ConcreteSubject implements Subject
private List<Observer> observers = new ArrayList<>(;
public void addObserver(Observer observer)
observers.add(observer);
}
public void removeObserver(Observer observer)
ve(observer);
}
public void notifyObservers(String message)
for (Observer observer : observers)
observer.update(message);
}
}
```
以上示例只是设计模式的一小部分,设计模式有更多的种类和应用场景,每个设计模式都有自己的优缺点和适用范围。在实际开发中,根据具体情况选择合适的设计模式,可以提高代码的可读性和可维护性,同时也可以减少重复代码和降低耦合度。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论