java 框架广泛使用设计模式,包括:工厂模式:创建对象而不指定其具体类;单例模式:确保一个类只有一个实例;建造者模式:逐步构建复杂对象;观察者模式:对象订阅事件并收到通知。
Java 框架设计模式详解
简介
设计模式是一组可重用的解决方案,用于解决常见编程问题。在 Java 框架中,这些模式广泛用于简化应用程序的架构并提高其可靠性和灵活性。本文将探讨一些重要的 Java 框架设计模式,并提供实战案例 作为参考。
工厂模式
工厂模式提供了一种创建对象而不指定其具体类的机制。这允许应用程序在不了解底层类的情况下创建对象,从而提高了灵活性。
实战案例 :
publicclassShapeFactory{
publicShapegetShape(StringshapeType){
if(shapeType.equals("rectangle")){
returnnewRectangle();
}elseif(shapeType.equals("circle")){
returnnewCircle();
}
returnnull;
}
}
publicclassClient{
publicstaticvoidmain(String[]args){
ShapeFactoryfactory=newShapeFactory();
Shapeshape=factory.getShape("rectangle");
shape.draw();
}
}
单例模式
单例模式确保一个类只有一个实例。这个实例可以在整个应用程序中轻松访问,非常适合存储全局状态数据或处理并发性。
实战案例 :
publicclassSingleton{
privatestaticSingletoninstance;
privateSingleton(){}
publicstaticSingletongetInstance(){
if(instance==null){
instance=newSingleton();
}
returninstance;
}
}
publicclassClient{
publicstaticvoidmain(String[]args){
Singletonsingleton1=Singleton.getInstance();
Singletonsingleton2=Singleton.getInstance();
System.out.println(singleton1==singleton2);//true
}
}
建造者模式
建造者模式允许通过逐步构建复杂对象来分离对象的创建和表示。它提供了灵活性,可以创建各种具有不同配置的对象。
实战案例 :
publicclassPizzaBuilder{
privateStringcrust;
privateListtoppings;
publicPizzaBuilderwithCrust(Stringcrust){
this.crust=crust;
returnthis;
}
publicPizzaBuilderwithTopping(Stringtopping){
toppings.add(topping);
returnthis;
}
publicPizzabuild(){
returnnewPizza(crust,toppings);
}
}
publicclassClient{
publicstaticvoidmain(String[]args){
PizzaBuilderbuilder=newPizzaBuilder();
Pizzapizza=builder.withCrust("thin").withTopping("cheese").withTopping("pepperoni").build();
System.out.println(pizza);
}
}
观察者模式
观察者模式允许对象订阅事件,当事件发生时收到通知。这种模式广泛用于实现松散耦合、响应事件的应用程序。
实战案例 :
publicinterfaceSubject{
voidattach(Observerobserver);
voiddetach(Observerobserver);
voidnotifyAll();
}
publicinterfaceObserver{
voidupdate();
}
publicclassConcreteSubjectimplementsSubject{
privateListobservers;
privateintstate;
publicvoidsetSubjectState(intstate){
this.state=state;
notifyAll();
}
@Override
publicvoidnotifyAll(){
for(Observerobserver:observers){
observer.update();
}
}
}
publicclassConcreteObserverAimplementsObserver{
@Override
publicvoidupdate(){
System.out.println("ObserverAnotified.");
}
}
publicclassClient{
publicstaticvoidmain(String[]args){
ConcreteSubjectsubject=newConcreteSubject();
ConcreteObserverAobserverA=newConcreteObserverA();
subject.attach(observerA);
subject.setSubjectState(10);
}
}
以上就是java框架设计模式详解的详细内容,更多请关注其它相关文章!