`
lpdyxm
  • 浏览: 26210 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于几个比较常见的设计模式

阅读更多
  1. 单例模式

这是一种应用非常广泛的设计模式,应用中许多组件都只需要单个实例,

两个优势:

  •  减少创建java实例所带来的系统开销,
  • 便于系统跟踪单个java实例的生命周期、实例状态!

具体的代码实现:

  class Singleton{
private static Singleton singleton;

private Singleton(){}:

public static Singleton getSingleton(){

 if(singleton==null){
 singleton=new Singleton();

}

return singleton;

}

}

测试类:

public class TestSingleton{
  public static void main(String args[]){
  //创建实例不能通过构造器,只能通过getSingleton()方法来实现

Singleton s1=Singleton.getSingleton();

Singleton s2=singleton.getSingleton();

System.out.println(s1==s2);//将返回true;

 }

}

 

运用举例:

在javaee的运用中,可能只需要一个数据库引擎访问点,hibernate访问时只需要一个SessionFactory 实例,如果在系统为它们创建多个实例,会加大对系统的开销,同时也没什么意义!

 

 

2.简单工厂模式:将多个类对象交给工厂类来生成的设计方式就是简单工厂模式

什么叫硬编码耦合?

直接通过调用类的类名,一旦系统需要重构,就必须修改类名了!

设计方法:

比如A类要调用b类里的方法,刚开始我们会选择直接通过new关键字来创建一个b实例,然后调用b类的方法,但是我们如果用简单工厂模式的话,就可以这样来实现:

让b类实现以个d接口,而A类只需要D接口耦合----A类并不直接使用new关键字来创建B实例,而是重新定义一个工厂类,DFactory,由该工厂类来负责创建D实例,而A类只需要通过DFactory工厂的方法来得到ib的实例,以后如果A类需要调用E类的方法,只需要E类也实现D接口!并改写DFActory中创建D撕裂的方法,让该工厂产生E实例即可。

 

实例讲解:

工厂类:

public class BuildFactory {
   public Output getOut(){
    return new Computer();//这个方法如同:Output out=(Output)new Computer();
   }
}

接口:

public interface Output {
  public String out();
  public String out2();
}

调用类:

public class Printer implements Output {

 @Override
 public String out() {
  // TODO Auto-generated method stub
 
  BuildFactory factory=new BuildFactory();
  

  return factory.getOut().out();
 }

 @Override
 public String out2() {
  // TODO Auto-generated method stub
  
  return null;
 }

}

 

被调用类:

public class Computer implements Output {

 @Override
 public String out() {
  // TODO Auto-generated method stub
  
  return "abs";
 }

 @Override
 public String out2() {
  // TODO Auto-generated method stub
  
  return "abs2";
 }
  
}

 

工厂方法和抽象工厂

工厂方法:在简单工厂模式的前提下,做出了如下改进,但使用工厂方法设计模式时,对象调用者需要与具体的工厂类耦合:当需要不同对象时,程序需要调用相应工厂对象的方法来得到所需要的对象。

抽象工厂类:工厂类不制造具体的被调用对象,而是制造不同的工厂对象。

将上例中的工厂抽象为一个接口!

新增加了两个生成实例的接口!

工厂方法具体代码如下:

public interface BuilderFactory {
    Output getOut();
}
public class Computer implements Output  {

 @Override
 public String out1() {
  // TODO Auto-generated method stub
  return "computer";
 }

 @Override
 public void out2() {
  // TODO Auto-generated method stub
  
 }

}

 

public class ComputerFactory implements BuilderFactory{

 @Override
 public Output getOut() {
  // TODO Auto-generated method stub
  return  new Computer();
 }

}

 

public interface Output {
  String out1();
  void out2();
}

 

public class Printer implements Output {

 @Override
 public String out1() {
  // TODO Auto-generated method stub
  return "printer";
 }

 @Override
 public void out2() {
  // TODO Auto-generated method stub
  
 }

}

 

public class PrinterFactory  implements BuilderFactory{

 @Override
 public Output getOut() {
  // TODO Auto-generated method stub
  return new Printer();
 }

}

 

抽象工厂模式的具体代码如下:

与上面不同的在于:

public class OutputFactoryFacotory {
  public static OutputFactory getOutputFactory(){
   return null;//这里就是逻辑代码(通过条件选择要创建的工厂对象)
  }
}

 

 

代理模式:客户端代码不能活不想直接访问被调用对象,而是额外的创建一个代理对象返回给客户端使用

 

 

 

未完待续!!!!

 

 

 

0
2
分享到:
评论

相关推荐

    c#几种常用的设计模式

    在软件开发中,设计模式是经过时间和实践验证的解决方案,用于解决常见的编程问题。C#作为.NET框架的主要语言,其开发者经常使用各种设计模式来提高代码的可读性、可维护性和可扩展性。以下是对标题和描述中提到的几...

    java开发的几种常见设计模式

    java开发的几种常见设计模式. 工厂模式是我们最常用的模式了,著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。 为什么工厂模式是如此常用?因为工厂模式就相当于创建实例对象的new...

    几种设计模式的理解设计模式理解

    设计模式是软件开发中的一种重要概念,用于解决常见的设计问题并提供可复用的解决方案。以下是对几种设计模式的详细理解和应用。 1. 工厂模式 工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在这...

    几种常见设计模式案例及类图

    本资料包包含了几个常见的设计模式案例,并通过C#语言进行了实现,旨在帮助开发者理解和应用这些模式。以下是对标题和描述中提及的设计模式进行的详细说明: 1. **工厂方法模式**: 工厂方法模式是一种创建型设计...

    常见设计模式的解析和实现(C++版)

    在“常见设计模式的解析和实现(C++版)”PDF文档中,你可能会看到每个模式的详细解释,包括它的意图、适用场景、结构、参与者以及具体的C++实现示例。通过这些示例,你可以更好地理解如何在实际项目中应用这些模式...

    几种常见设计模式的案例分析源码

    本资料包包含对几种常见设计模式的案例分析源码,下面将详细阐述这些设计模式及其应用。 1. 观察者模式(Observer Pattern): 观察者模式是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的...

    设计模式之蝉

    此外,内容中提到的“单例模式”(Singleton pattern)是在软件工程中非常常见的一种设计模式,它用于确保一个类只有一个实例,并提供一个全局访问点。单例模式常常被用于管理共享资源,例如打印机的打印队列管理器...

    常见UI设计模式.pdf

    本文将详细介绍几种常见的UI设计模式及其应用场景,帮助设计师们更好地理解和运用这些模式。 #### 二、常见UI设计模式详解 ##### 1. 主体/细节(Master/Detail)模式 - **概念**:这是一种典型的分屏设计模式,...

    java模式,设计模式,多种设计模式

    需要注意的是,J2EE设计模式解决了J2EE项目中最常见的问题。如果你遇到的问题非常特殊,很可能找不到相应的设计模式来解决。 ##### 4.2 软件开发设计模式 软件开发设计模式又可以进一步分为两类:通用面向对象设计...

    设计模式的几个简单例子

    在软件设计中,设计模式是一种解决常见问题的模板或最佳实践。它们是经过验证的解决方案,可以帮助开发者在设计系统时保持灵活性和可扩展性。在这个主题中,我们将深入探讨两种设计模式:Abstract Factory(抽象工厂...

    设计模式课程设计模板

    在这个"设计模式课程设计模板"中,我们可以期待学习到以下几个主要的知识点: 1. **设计模式分类**:设计模式通常分为三类——创建型、结构型和行为型。创建型模式关注对象的创建,如单例模式、工厂模式、抽象工厂...

    JavaScript 设计模式(高清扫描版本)- 张容铭

    本书可能涵盖以下几个主要的设计模式类别: 1. 创建型模式:这些模式关注对象的创建过程,例如单例模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式。在JavaScript中,单例模式常用于确保一个类只有一个...

    几种常用的设计模式

    二、常见设计模式介绍 1. 单例模式: 单例模式确保一个类只有一个实例,并提供一个全局访问点,常用于配置中心、缓存管理等场景。其优点在于减少系统内存开销,方便跟踪对象生命周期和状态。 2. 简单工厂模式: ...

    常用设计模式java实现

    设计模式是软件工程中经过长期实践总结出的通用解决方案,它们描述了在特定情况下如何解决常见问题。在Java编程中,设计模式的应用可以提高代码的可读性、可维护性和可扩展性。以下是对标题和描述中提到的几种设计...

    设计模式设计题java.docx

    设计模式是一种软件设计的解决方案,它提供了一种通用的设计思路,帮助开发者解决常见的问题。设计模式可以分为三种层次:架构模式、设计模式和 idioms。架构模式是高层次的设计模式,描述了系统的结构组成和相互...

    容易混淆的几个设计模式.

    设计模式是软件开发中的重要概念,它是一种在特定场景下解决常见问题的模板,可以提高代码的可读性、可维护性和可复用性。以下是一些容易混淆的设计模式的详细解释: 1. **策略模式**: 策略模式主要用于封装不同...

    DAO设计模式 DAO 设计模式 JAVA设计模式

    DAO(Data Access Object)设计模式是软件开发中一种常见的用于处理数据访问的模式,它将业务逻辑与数据访问逻辑分离,使得代码结构更加清晰,更易于维护和测试。在Java开发中,DAO模式广泛应用于数据库操作,为应用...

    java经典设计模式

    下面将详细讨论标题和描述中提到的几个主要设计模式。 1. **工厂模式**:工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。通过使用工厂模式,我们可以在不暴露对象创建逻辑的情况下,让类的实例化...

Global site tag (gtag.js) - Google Analytics