java语言中的设计模式实践介绍
设计模式是解决软件设计和开发问题的一种经过验证的思想和方法。它们可以减轻软件开发中的复杂性,并提供灵活、可重用的代码。在Java语言中,设计模式的应用是极其重要的。本文将介绍Java语言中几种常用的设计模式及其实践应用。
工厂模式是一种用于创建对象的设计模式。它将对象的创建过程封装在单个类中,以便在需要时轻松地生成新的实例。工厂模式可以有效地减少代码重复性,同时提供更高的灵活性。下面是一个工厂模式的实例:
//定义接口
public interface Animal {
void makeSound();
}
//定义实现类
public class Cat implements Animal{
@Override
public void makeSound() {
System.out.println("Meow");
}
}
public class Dog implements Animal{
@Override
public void makeSound() {
System.out.println("Woof");
}
}
public class AnimalFactory {
public static Animal createAnimal(String animalType){
if(animalType.equalsIgnoreCase("dog")){
return new Dog();
}
else if(animalType.equalsIgnoreCase("cat")){
return new Cat();
}
else return null;
}
}
//测试
public class FactoryTest {
public static void main(String[] args) {
Animal myAnimal = AnimalFactory.createAnimal("dog");
myAnimal.makeSound();
}
}单例模式是一种保证一个类只有一个实例的设计模式。它通常用于控制资源和管理单个对象。Java中的单例模式可以通过懒汉式或饿汉式来实现。下面是一个饿汉式的单例模式实例:
public class Singleton {
private static Singleton uniqueInstance = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
return uniqueInstance;
}
}观察者模式是一种模式,其中对象(称为观察者)通过向另一个对象(称为主题)注册自己,以便在主题更改时接收通知。观察者模式可以帮助您设计松耦合的系统,其中对象之间相互交互,而不会引起耦合影响。下面是一个观察者模式的实例:
立即学习“Java免费学习笔记(深入)”;
//定义接口
public interface Observer {
public void update(int temperature, int humidity, int pressure);
}
//实现类
public class WeatherData implements Subject {
private ArrayList<Observer> observers;
private int temperature;
private int humidity;
private int pressure;
public WeatherData(){
observers = new ArrayList<Observer>();
}
public void registerObserver(Observer o) {
observers.add(o);
}
public void removeObserver(Observer o) {
int i = observers.indexOf(o);
if (i >= 0) {
observers.remove(i);
}
}
public void notifyObservers() {
for (Observer observer : observers) {
observer.update(temperature, humidity, pressure);
}
}
public void measurementsChanged() {
notifyObservers();
}
public void setMeasurements(int temperature, int humidity, int pressure) {
this.temperature = temperature;
this.humidity = humidity;
this.pressure = pressure;
measurementsChanged();
}
}
//测试
public class WeatherStation {
public static void main(String[] args) {
WeatherData weatherData = new WeatherData();
CurrentConditionsDisplay currentDisplay = new CurrentConditionsDisplay(weatherData);
weatherData.setMeasurements(80, 65, 30.4f);
weatherData.setMeasurements(82, 70, 29.2f);
}
}策略模式是一种模式,其中对象将行为分离为不同的实现。它允许您在运行时选择算法的实现,从而提供更高的灵活性。策略模式可以帮助您设计可重用的代码,同时减少重复性。
//定义接口
public interface FlyBehavior {
public void fly();
}
public class FlyWithWings implements FlyBehavior {
public void fly() {
System.out.println("I'm flying!!");
}
}
public interface QuackBehavior {
public void quack();
}
public class Quack implements QuackBehavior {
public void quack() {
System.out.println("Quack");
}
}
//策略模式实现类
public abstract class Duck {
FlyBehavior flyBehavior;
QuackBehavior quackBehavior;
public void performFly() {
flyBehavior.fly();
}
public void performQuack() {
quackBehavior.quack();
}
public void setFlyBehavior(FlyBehavior fb) {
flyBehavior = fb;
}
public void setQuackBehavior(QuackBehavior qb) {
quackBehavior = qb;
}
}
public class MallardDuck extends Duck {
public MallardDuck() {
quackBehavior = new Quack();
flyBehavior = new FlyWithWings();
}
public void display() {
System.out.println("I'm a real Mallard duck");
}
}
//测试
public class MiniDuckSimulator {
public static void main(String[] args) {
Duck mallard = new MallardDuck();
mallard.performQuack();
mallard.performFly();
}
}总结:
设计模式是Java语言中非常有用的编程思想和方法。工厂模式、单例模式、观察者模式和策略模式都是常用的设计模式,它们的实践应用可以大大提高程序的灵活性和可重用性。希望本文所述的设计模式内容,对读者加深对设计模式的理解和实践应用有所帮助。
以上就是Java语言中的设计模式实践介绍的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号