インターネット回線のJava香港フェイス質問:春どのようなデザインパターンと?深く考える開始

インターネット回線のJava香港フェイス質問:春どのようなデザインパターンと?深く考える開始



インターネット回線のJava香港フェイス質問:春どのようなデザインパターンと? 深く考える開始



序文

しかし、多くの場合、秦で枕帳の仕事や勉強などのデザインパターンには厄介な立場を言っていない、またそれは、私たちはしばしば忘れているが、何のメモリを持っていません。古典的な産業として、両方の設計アーキテクチャの観点から、またはコーディングの面でSpringフレームワークは、それはインラインモデルと呼ばれます。

さて、私は今日のコンテンツを開始し、あまり話をしませんでした。春は、一般的に私たちの例では、9を達成するためのデザインパターンを使用していました。

インタビュアーのもはや恐れる後に私に尋ねた:春どのようなデザインパターンを持ちます。

シンプルなファクトリパターン

また、静的ファクトリメソッド(StaticFactory方法)モードとして知られているが、GOFのデザインパターンの23種類のいずれかに属していません。

シンプルなファクトリパターンの本質は、動的な製品を作成するために、どのクラスを決定する必要があり、渡されたパラメータに応じてクラスファクトリです。

たBeanFactoryにおけるばねは前に特定のパラメータに基づくべきかどうかが、パラメータを作成するために通過するか、このような状況を作成するために通過した後、渡された一意の識別子からBeanオブジェクトを取得するために、単純なファクトリパターンの実施形態です。次の設定は、HelloItxxzクラスでitxxzBeanを作成することです。


インターネット回線のJava香港フェイス質問:春どのようなデザインパターンと? 深く考える開始



ファクトリメソッドパターン

一般的に、直接新しいオブジェクトを作成する新しいアプリケーションで使用される、相分離の作成するために、使用するオブジェクト、工場モデルの使用には、そのアプリケーションを作成し、ファクトリオブジェクトへのオブジェクトの責任を初期化します。

通常の状況下では、アプリケーションがBeanを作成するための独自のファクトリオブジェクトを持っています。アプリケーションは、春の自社工場管理の対象となる場合は、春の管理は、一般的な豆が、工場出荷時の豆ではありません。

これを説明するためにファクトリメソッド静的メソッドの例を見てみましょう:


インターネット回線のJava香港フェイス質問:春どのようなデザインパターンと? 深く考える開始



Config.xm管理するためにSpringコンテナに組み込まれる設定ファイルをビルドするには、工場出荷時の方法により、静的メソッドの名前を指定する必要があります。


インターネット回線のJava香港フェイス質問:春どのようなデザインパターンと? 深く考える開始



テスト:


インターネット回線のJava香港フェイス質問:春どのようなデザインパターンと? 深く考える開始



シングルトン

クラスはインスタンスを1つだけ持っていることを確認し、それをアクセスするためのグローバルアクセスポイントを提供します。

単一バネ実施の形態の後、文章の半分が完了し、即ち、グローバルアクセスポイントたBeanFactoryを提供します。しかしばね管理は任意のJavaオブジェクトであるため、ビルダーのレベルを制御するために単一の実施形態。

コアのヒントポイント:春の豆次のデフォルトではシングルトン=で、シングルトンです| =「真偽」または範囲を指定するには「?。」

适配器模式

在Spring的Aop中,使用的Advice(通知)来增强被代理类的功能。Spring实现这一AOP功能的原理就使用代理模式(1、JDK动态代理。2、CGLib字节码生成技术代理。)对类进行方法级别的切面增强,即,生成被代理类的代理类, 并在代理类的方法前,设置拦截器,通过执行拦截器重的内容增强了代理方法的功能,实现的面向切面编程。

Adapter类接口:Target


インターネット回線のJava香港フェイス質問:春どのようなデザインパターンと? 深く考える開始



包装器模式

在我们的项目中遇到这样一个问题:我们的项目需要连接多个数据库,而且不同的客户在每次访问中根据需要会去访问不同的数据库。我们以往在spring和hibernate框架中总是配置一个数据源,因而sessionFactory的dataSource属性总是指向这个数据源并且恒定不变,所有DAO在使用sessionFactory的时候都是通过这个数据源访问数据库。

但是现在,由于项目的需要,我们的DAO在访问sessionFactory的时候都不得不在多个数据源中不断切换,问题就出现了:如何让sessionFactory在执行数据持久化的时候,根据客户的需求能够动态切换不同的数据源?我们能不能在spring的框架下通过少量修改得到解决?是否有什么设计模式可以利用呢?

首先想到在spring的applicationContext中配置所有的dataSource。这些dataSource可能是各种不同类型的,比如不同的数据库:Oracle、SQL Server、MySQL等,也可能是不同的数据源:比如apache 提供的org.apache.commons.dbcp.BasicDataSource、spring提供的org.springframework.jndi.JndiObjectFactoryBean等。然后sessionFactory根据客户的每次请求,将dataSource属性设置成不同的数据源,以到达切换数据源的目的。

spring中用到的包装器模式在类名上有两种表现:一种是类名中含有Wrapper,另一种是类名中含有Decorator。基本上都是动态地给一个对象添加一些额外的职责。

代理模式

为其他对象提供一种代理以控制对这个对象的访问。 从结构上来看和Decorator模式类似,但Proxy是控制,更像是一种对功能的限制,而Decorator是增加职责。

spring的Proxy模式在aop中有体现,比如JdkDynamicAopProxy和Cglib2AopProxy。

观察者模式

定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

spring中Observer模式常用的地方是listener的实现。如ApplicationListener。

策略模式

定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。

spring中在实例化对象的时候用到Strategy模式

在SimpleInstantiationStrategy中有如下代码说明了策略模式的使用情况:


インターネット回線のJava香港フェイス質問:春どのようなデザインパターンと? 深く考える開始



模板方法模式

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

Template Method模式一般是需要继承的。这里想要探讨另一种对Template Method的理解。spring中的JdbcTemplate,在用这个类时并不想去继承这个类,因为这个类的方法太多,但是我们还是想用到JdbcTemplate已有的稳定的、公用的数据库连接,那么我们怎么办呢?我们可以把变化的东西抽出来作为一个参数传入JdbcTemplate的方法中。但是变化的东西是一段代码,而且这段代码会用到JdbcTemplate中的变量。怎么办?那我们就用回调对象吧。

JdbcTemplateは、このコールバックオブジェクト内の変数を操作する方法を定義して、我々は、このメソッドを実装する必要があり、ここで何かにフォーカスの変更を置きます。その後、我々はこのように、コールを完了、JdbcTemplateにこのコールバックオブジェクトを渡します。これは、テンプレートメソッドは、別の実装を継承する必要はありませんかもしれません。

以下は具体的な例であります:

executeメソッドJdbcTemplate

JdbcTemplateは、executeメソッドを実行します


インターネット回線のJava香港フェイス質問:春どのようなデザインパターンと? 深く考える開始



インターネット回線のJava香港フェイス質問:春どのようなデザインパターンと? 深く考える開始



春学習脳のマッピング


インターネット回線のJava香港フェイス質問:春どのようなデザインパターンと? 深く考える開始


読者の利点:

特別に今日のコンパイル、また、私は多くの友人を持っている最近のプライベートの手紙は、スプリングのストロークの準備をするために私に言った。私はあなたが鮮明な画像を与えることができることを望む、見ていただきありがとうございます、と私は共有ドキュメントへのインタビューを整理していたなら、私に尋ねました誰にでも顔の質問情報を、私はあなたがよくインタビューを願っています。必要自分で作成したデータ

道を受信:私たちの無料のJava周にアクセスする人の数の種類のための私の懸念

インターネット回線のJava香港フェイス質問:春どのようなデザインパターンと? 深く考える開始


おすすめ

転載: blog.51cto.com/14456091/2477126
おすすめ