`
lpdyxm
  • 浏览: 25603 次
  • 性别: 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
分享到:
评论

相关推荐

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

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

    常见设计模式示例(C#实现)

    常见设计模式示例(C#实现):常见的几十种设计模式,都画了一个简单的静态结构图。

    设计模式python模版

    设计模式是在软件工程中解决常见问题的通用、可重用的解决方案。它们是在多年的软件开发实践中逐渐被发现、抽象化和总结出来的。设计模式可以帮助程序员以优雅、高效的方式解决软件开发中的问题,提高代码的可读性、...

    Python中的设计模式:用Python实现的常见GOF模式

    Python中的设计模式该存储库重点介绍了以Python实现的23个著名的GoF(四人制)设计模式。 它是对我的《 Python中的设计模式》一书的补充。 本书中的所有代码示例都可以在这些页面中找到。 设计模式是可以重复应用于...

    微服务架构设计.7z

    PPT主题是:微服务 主要从:1.什么是微服务 2....微服务架构的设计模式 4.springcloud介绍 5.Spring Cloud常见微服务公共组件 以上几个方面进行详细的介绍,适用于企业讲座讲解、自学、学校组会讲解等多种场合。

    JS 设计模式之:单例模式定义与实现方法浅析

    笔者打算通过几篇文章通俗地讲一讲常见的或者实用的设计模式。 今天先从最简单的一个入手:单例模式。 文中的示例代码会使用 ES6 语法,尽量简化不必要的细节 概念 单例模式(Singleton)属于创建型的设计模式,它...

    设计模式Callback介绍与实例

    回调函数包含下面几个特性: >属于工作流的一个部分; >必须按照工作流指定的调用约定来申明(定义); >他的调用时机由工作流决定,回调函数的实现者不能直接调用回调函数来实现工作流的功能; 回调机制 回调机制...

    常用开发模式讲解.zip

    设计模式是在软件开发中解决常见问题的最佳实践。它们是在大量项目中积累的经验的总结,旨在提高代码的可重用性、可维护性和可扩展性。下面介绍几种常用的设计模式,包括单例模式、工厂模式、观察者模式、建造者模式...

    43丨单例模式(下):如何设计实现一个集群环境下的分布式单例模式?1

    2020-02-10 王争设计模式之美进入课程讲述:冯永吉时长 10:21大小 8.31M上两节课中,我们针对单例模式,讲解了单例的应用场景、几种常见的代码实现

    Java的常用设计模式

    说起设计模式,很多编程语言的设计模式大同小异,而且设计模式很多,这里介绍一下java的几种常见的设计模式,其实设计模式是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便,所以要降低依赖,降低耦合...

    没那么难,谈CSS的设计模式

    曾有人调侃,设计模式是工程师用于跟别人显摆的,显得高大上;也曾有人这么说,不是设计模式没用,是你还没有到能懂它,会用它的时候。...设计模式,这个词汇我们常见,几乎所有的编程语言都会有几

    《Java与模式》

    本书是一本讲解设计原则以及最为常见的设计模式的实用教材,目的是为了工作繁忙的Java系统设计师提供一个快速而准确的设计原则和设计模式的辅导。本书分为55章,第一个章节讲解一个编编程模式,说明此模式的用意、...

    重构与模式2.pdf

     1994年,《设计模式》为我们带来了常见设计问题的经典解决方案,从而改变了整个面向对象开发的面貌。  1999年,《重构》为我们带来了一种改进代码的高效过程,从而彻底改变了面向对象设计的方式。  现在,在众...

    重构与模式1.pdf

     1994年,《设计模式》为我们带来了常见设计问题的经典解决方案,从而改变了整个面向对象开发的面貌。  1999年,《重构》为我们带来了一种改进代码的高效过程,从而彻底改变了面向对象设计的方式。  现在,在众...

    Java常见面试题.pdf

    Java常见面试题: 1. 什么是 Java?它的特点是什么? 2. 解释面向对象编程(OOP)的概念和特点...列举几个常见的设计模式。 19. 解释 Java 中的序列化和反序列化的概念。 20. 如何处理并发编程中的线程安全和性能问题?

    Java与模式(清晰书签版)

     本书是一本讲解设计原则以及最为常见的设计模式的实用教材,目的是为了工作繁忙的Java系统设计师提供一个快速而准确的设计原则和设计模式的辅导。本书分为55章,第一个章节讲解一个编编程模式,说明此模式的用意、...

    iOS开发:设计模式那点事

    说起设计模式,感觉自己把握不了笔头,所以单拿出iOS开发中的几种常用设计模式谈一下。概念:整个应用或系统只能有该类的一个实例在iOS开发我们经常碰到只需要某类一个实例的情况,最常见的莫过于对硬件参数的访问类...

    Java最常见200面试题以及解析

    总共包含十九个模块,分别是: Java 基础、容器、多线程、反射、对象拷 贝、Java Web 、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、...

Global site tag (gtag.js) - Google Analytics