デザインパターン - 概要
急いによって2019年7月17日夜10時43分三十二秒
1.はじめに
①デザインパターンは、の一般的な質問を目的としたソフトウェア開発プロセスにおけるソフトウェア開発者であり、最適解、このソリューションは、プログラマすることができ、繰り返し適用される同様の問題を解決します。
②1994 Erich Gamma氏、リチャードヘルム、ラルフ・ジョンソンとジョン・ブリシディースによって4(総称し GOF)共同出版と呼ばれる デザインパターン-再利用可能なオブジェクト-の要素指向ソフトウェア( 中国語の翻訳:デザインパターン-再利用可能なオブジェクト指向ソフトウェア要素)での本の、初めての本は、ソフトウェア開発デザインパターンの概念に言及しました。彼らは、オブジェクト指向設計の原則に基づいて、2つのデザインパターンを提案した。まず、プログラミングではなく、インターフェイスのプログラミング達成します。第二に、優先対象組成物ではなく継承。
2.
(1)23種のGOFのデザインパターンの合計を含む3つの特定のカテゴリに分ける:スキーマを作成(生成に関するパターン)、構造モデル(構造パターン)、モデルの種類(行動パターン)。J2EEデザインパターン:追加だけでなく、学習のデザインパターンを必要とします。
(2)分類を記述し
① スキーマの作成
デザインパターンは、代わりに新しいオペレータ直接インスタンス化オブジェクトを使用する、論理オブジェクトを作成すると同時に、隠れ作成する方法を提供します。オブジェクトが特定のインスタンスのために作成される必要があるかを決定するときに、このプログラムはより柔軟になります。
- Factoryパターン(ファクトリパターン)
- 抽象ファクトリー(Abstract Factoryパターン)
- シングルトン(Singletonパターン)
- ビルダーモード(Builderパターン)
- プロトタイプモデル(Prototypeパターン)
② 構造モデルの
デザインパターンは、クラスとオブジェクトの組み合わせに焦点を当てます。継承の概念は、インタフェースオブジェクトの新しい特徴の組み合わせの組み合わせを定義するために使用されます。
- アダプタモード(Adapterパターン)
- ブリッジモード(ブリッジパターン)
- フィルタモード(フィルター、基準パターン)
- コンバインモード(合成パターン)
- デコレーター(Decoratorパターン)
- アピアランスモデル(Facadeパターン)
- フライ級(Flyweightパターン)
- エージェントモード(Proxyパターン)
③ 行動パターン
これらの設計モードのは、オブジェクト間の通信について特に懸念しています。
- Chain of Responsibilityパターン(Chain of Responsibilityパターン)
- コマンドモード(コマンドパターン)
- Interpreterパターン(通訳・パターン)
- イテレータパターン(イテレータパターン)
- 仲介モデル(Mediatorパターン)
- メモモード(Mementoパターン)
- Observerパターン(Observerパターン)
- モード状態(状態パターン)
- ヌルオブジェクトモード(nullオブジェクトパターン)
- 戦略モード(Strategyパターン)
- テンプレートモード(テンプレートパターン)
- Visitorパターン(Visitorパターン)
④ J2EEパターン
これらのデザインモードのは、プレゼンテーション層について特に懸念しています。これらのモードは、SunのJavaセンターによって識別されます。
- MVCパターン(MVCパターン)
- エージェントモード(ビジネスデリゲートパターン)
- 組成エンティティモード(コンポジットエンティティパターン)
- モードのデータアクセスオブジェクト(データアクセスオブジェクトパターン)
- フロントエンドコントローラモード(フロントコントローラパターン)
- インターセプタフィルタパターン(インターセプトフィルタパターン)
- サービスロケータパターン(サービスロケータパターン)
- オブジェクトの転送モード(転送オブジェクトパターン)
(3)連絡先
3.デザインパターンの6つの原則は、
①オープンクローズ原理(オープンクローズ原理)
:開閉の原理が意味拡張のために開いたが、修正のため閉鎖しました。プログラムを展開する必要がある場合は、ホットスワップ可能なの効果を達成するために、既存のコードを変更しません。要するに、プログラムは、拡張性、容易なメンテナンスとアップグレードを改善することです。この効果を達成したい、我々は詳細設計に従う、インターフェースや抽象クラスを使用する必要があり、我々は、この点に言及します。
②リヒター置換原則(リスコフの置換原則)
リヒター置換原則は、オブジェクト指向設計の基本原則の一つです。任意の基底クラスが表示されることができる場所でリヒターの置換原則、サブクラスが表示されることができるようになります。LSPは、基本クラスを置き換えることができ、派生クラス、および機能のソフトウェアユニットが影響を受けていないときに礎石のみ、基本クラスが実際に再利用できる多重化継承され、派生クラスは、基本クラスに基づいて上の新しい追加することができます行動。相補性の原理はリヒターの置換原則閉鎖されています。リヒター置換原理は抽象を達成するための具体的な手順については、仕様ですので、開口部の原理を実装し、終値は、抽象化の重要なステップであり、継承ベースクラスとサブクラスは、抽象的、具体的な実現です。
③依存性逆転原理(依存性逆転原理)
この原則は、開閉の原則に基づいている、特定のコンテンツ:インタフェースのプログラミングのために、かなり具体的に頼るよりも、抽象的に依存しています。
④インタフェース偏析原理(インタフェース偏析原理)
界面分離複数の、単一のインターフェースを使用するよりも優れている:この原則はことを意味します。それはまた別の意味がありました:クラス間の結合を低減します。このように、依存を減らす重視し、ソフトウェア設計を、アップグレード、メンテナンスが容易な大規模なソフトウェアアーキテクチャからのデザインパターンは、結合を低減するという事実。
⑤デメテル、また、少なくとも既知の原則として知られている(デメテル原理)
最少知道原则是指:一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。
⑥ 合成复用原则(Composite Reuse Principle)
合成复用原则是指:尽量使用合成/聚合的方式,而不是使用继承。
4. 设计模式类型事例
① 创建型模式
FACTORY?加工工厂:给它“M4A1”,它给你产把警枪,给它“AK47”,你就端了把匪枪。CS里买枪的程序一定是用这个模式的。
BUILDER?生产流水线:以前是手工业作坊式的人工单个单个的生产零件然后一步一步组装做,好比有了工业革命,现在都由生产流水线代替了。如要造丰田汽车,先制定汽车的构造如由车胎、方向盘、发动机组成。再以此构造标准生产丰田汽车的车胎、方向盘、发动机。然后进行组装。最后得到丰田汽车。
PROTOTYPE?印刷术的发明:以前只能临贴抄写费时费力,效率极低,有了印刷术,突突的。
SINGLETON?确保唯一:不是靠new的,是靠instance的,而且要instance地全世界就这么一个实例(这可怜的类,也配叫“类”)。 看SingleTon类代码。
② 结构型模式
ADAPTER?翻译官:胡哥只会汉语,布什只会美语,翻译官既通汉又通美,Adapter了 。
DECORATOR?装饰:名字可以标识一个人,为了表示对一个人的尊重,一般会称其为“尊敬的”,有了装饰,好看多了。
BRIDGE?白马非马:马之颜色有黑白,马之性别有公母。我们说"这是马"太抽象,说"这是黑色的公马"又太死板,只有将颜色与性别和马动态组合,"这是(黑色的或白色的)(公或母)马"才显得灵活而飘逸,如此bridge模式精髓得矣。
COMPOSITE?大家族:子又生孙,孙又生子,子子孙孙,无穷尽也,将众多纷杂的人口组织成一个按辈分排列的大家族即是此模式的实现。
FACADE?求同存异:高中毕业需读初中和高中,博士也需读初中和高中,因此国家将初中和高中普及成九年制义务教育。
FLYWEIGHT?一劳永逸:认识三千汉字,可以应付日常读书与写字,可见头脑中存在这个汉字库的重要。
PROXY?垂帘听政:犹如清朝康熙年间的四大府臣,很多权利不在皇帝手里,必须通过辅佐大臣去办。
③ 行为型模式
CHAIN OF RESPONSIBLEITY?租房:以前为了找房到处打听,效率低且找不到好的房源。现在有了房屋中介,于是向房屋中介提出租房请求,中介提供一个合适的房源,满意则不再请求,不满意继续看房,直到满意为止。
COMMAND?借刀杀人:以前是想杀谁就杀,但一段时间后领悟到,长此以往必将结仇太多,于是假手他人,挑拨他人之间的关系从而达到自己的目的。
INTERPRETER?文言文注释:一段文言文,将它翻译成白话文。
ITERATOR?赶尽杀绝:一个一个的搜索,绝不放掉一个。
MEDIATOR?三角债:本来千头万绪的债务关系,忽出来一中介,包揽其一切,于是三角关系变成了独立的三方找第四方中介的关系。
MEMENTO?有福同享:我有多少,你就有多少。
OBSERVER?看守者:一旦被看守者有什么异常情况,定会及时做出反应。
STATE?进出自由:如一扇门,能进能出,如果有很多人随时进进出出必定显得杂乱而安全,如今设一保安限制其进出,如此各人进出才显得规范。
STRATEGY?久病成良医:如人生病可以有各种症状,但经过长期摸索,就可以总结出感冒、肺病、肝炎等几种。
TEMPLATE METHOD?理论不一定要实践:教练的学生会游泳就行了,至于教练会不会则无关紧要。
VISITOR?依法治罪:因张三杀人要被处死,李四偷窃要被罚款。由此势必制定处罚制度,故制定法律写明杀人、放火、偷窃等罪要受什么处罚,经通过后须变动要小。今后有人犯罪不管是谁,按共条例处罚即是,这就是访问者模式诞生的全过程。
参考:
https://www.runoob.com/design-pattern/design-pattern-intro.html