一、创建模式
<o:p> </o:p>
创建模式分为类的创建模式和对象的创建模式两种:
1、 类的创建模式:类的创建模式使用继承关系,把类的创建延迟到子类,从而封装了客户端将得到哪些具体类的信息,并且隐藏了这些类的实例是如何被创建和放在一起的。
2、 对象的创建模式:而对象的创建模式则把对象的创建过程动态地委派给另一个对象,从而动态地决定客户端将得到哪些具体类的实例,以及这些类的实例是如何被创建和组合在一起的。
<o:p> </o:p>
A、 简单工厂模式Simple Factory<Static Factory Method静态工厂方法><o:p></o:p>
<o:p> </o:p>
简单工厂模式就是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例。
实例:
商店-----------à销货员[工厂] -------卖----à水果[抽象产品]<苹果[产品一]、梨[产品二]、草莓[产品三]><o:p></o:p>
<o:p> 用户告诉销货员水果的名称,销货员通过水果名称找到相应的水果;</o:p>
interface水果 (){
价格;
重量;
产地;
}
Class苹果() implements 水果{
苹果价格;
苹果重量;
苹果产地;
苹果品种;
苹果采摘日期;
}
Class 梨() implements 水果{
梨价格;
梨重量;
梨产地;
梨品种;
含糖量;
梨采摘日期;
}
Class 草莓() implements 水果{
草莓价格;
草莓重量;
草莓品种;
……
草莓采摘日期;
}
Class shop<销货员>(){
//创建静态工厂
Public static 水果 factory(String 水果名称) throws 水果未存在异常{
If(“苹果”.equals(水果名称)){
Return new 苹果();
}else If(“梨”.equals(水果名称)){
Return new 梨();
}else If(“草莓”.equals(水果名称)){
Return 草莓();
}else{
Throw 水果未存在异常;
}
}
}
<o:p> </o:p>
获取水果:
<o:p> </o:p>
Try{
苹果 A = Shop<销货员>.factory(“苹果”);
梨 A = Shop<销货员>.factory(“梨”);
}catch(Exception e){
System.out.println(“水果未存在异常……”);
}
<o:p> </o:p>
结构图:
<o:p> </o:p>
<v:group id="_x0000_s1026" style="MARGIN-TOP: 0px; Z-INDEX: 1; LEFT: 0px; MARGIN-LEFT: 1in; WIDTH: 4in; POSITION: absolute; HEIGHT: 109.2pt; TEXT-ALIGN: left" coordorigin="1980,9552" coordsize="5580,2340"><v:group id="_x0000_s1027" style="LEFT: 1980px; WIDTH: 5580px; POSITION: absolute; TOP: 9552px; HEIGHT: 2340px" coordorigin="1980,9552" coordsize="5580,2340"><v:shapetype id="_x0000_t202" coordsize="21600,21600" o:spt="202" path="m,l,21600r21600,l21600,xe"><v:stroke joinstyle="miter"></v:stroke><v:path gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><v:shape id="_x0000_s1028" style="LEFT: 1980px; WIDTH: 1440px; POSITION: absolute; TOP: 9552px; HEIGHT: 468px; mso-position-horizontal: absolute; mso-position-vertical: absolute" type="#_x0000_t202"><v:textbox style="mso-next-textbox: #_x0000_s1028">
</v:textbox></v:shape><v:shape id="_x0000_s1029" style="LEFT: 5220px; WIDTH: 2340px; POSITION: absolute; TOP: 9552px; HEIGHT: 468px; mso-position-horizontal: absolute; mso-position-vertical: absolute" type="#_x0000_t202"><v:textbox style="mso-next-textbox: #_x0000_s1029">
</v:textbox></v:shape><v:shape id="_x0000_s1030" style="LEFT: 5445px; WIDTH: 1980px; POSITION: absolute; TOP: 11424px; HEIGHT: 468px; mso-position-horizontal: absolute; mso-position-vertical: absolute" type="#_x0000_t202"><v:textbox style="mso-next-textbox: #_x0000_s1030">
</v:textbox></v:shape></v:group><v:line id="_x0000_s1031" style="POSITION: absolute; mso-position-horizontal: absolute; mso-position-vertical: absolute" coordsize="21600,21600" from="3420,9783" to="5220,9783" strokeweight="1pt"><v:stroke dashstyle="1 1" endarrow="block" endcap="round"></v:stroke></v:line><v:line id="_x0000_s1032" style="POSITION: absolute; mso-position-vertical: absolute" coordsize="21600,21600" from="6300,10023" to="6300,11427"><v:stroke endarrow="block"></v:stroke></v:line><w:wrap type="square"></w:wrap></v:group>
<o:p> <v:group id="_x0000_s1032" style="MARGIN-TOP: 467.1pt; Z-INDEX: 1; LEFT: 0px; MARGIN-LEFT: 144.75pt; WIDTH: 4in; POSITION: absolute; HEIGHT: 109.2pt; TEXT-ALIGN: left" coordorigin="1980,9552" coordsize="5580,2340"> <v:group id="_x0000_s1033" style="LEFT: 1980px; WIDTH: 5580px; POSITION: absolute; TOP: 9552px; HEIGHT: 2340px" coordorigin="1980,9552" coordsize="5580,2340"><v:shapetype id="_x0000_t202" coordsize="21600,21600" o:spt="202" path="m,l,21600r21600,l21600,xe"><v:stroke joinstyle="miter"></v:stroke><v:path gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><v:shape id="_x0000_s1034" style="LEFT: 1980px; WIDTH: 1440px; POSITION: absolute; TOP: 9552px; HEIGHT: 468px; mso-position-horizontal: absolute; mso-position-vertical: absolute" type="#_x0000_t202"><v:textbox style="mso-next-textbox: #_x0000_s1034">
</v:textbox></v:shape><v:shape id="_x0000_s1035" style="LEFT: 5220px; WIDTH: 2340px; POSITION: absolute; TOP: 9552px; HEIGHT: 468px; mso-position-horizontal: absolute; mso-position-vertical: absolute" type="#_x0000_t202"><v:textbox style="mso-next-textbox: #_x0000_s1035">
</v:textbox></v:shape><v:shape id="_x0000_s1036" style="LEFT: 5445px; WIDTH: 1980px; POSITION: absolute; TOP: 11424px; HEIGHT: 468px; mso-position-horizontal: absolute; mso-position-vertical: absolute" type="#_x0000_t202"><v:textbox style="mso-next-textbox: #_x0000_s1036">
</v:textbox></v:shape></v:group><v:line id="_x0000_s1037" style="POSITION: absolute; mso-position-horizontal: absolute; mso-position-vertical: absolute" coordsize="21600,21600" from="3420,9783" to="5220,9783" strokeweight="1pt"><v:stroke dashstyle="1 1" endarrow="block" endcap="round"></v:stroke></v:line><v:line id="_x0000_s1038" style="POSITION: absolute; mso-position-vertical: absolute" coordsize="21600,21600" from="6300,10023" to="6300,11427"><v:stroke endarrow="block"></v:stroke></v:line><w:wrap type="square"></w:wrap></v:group></o:p>
学习中......
<o:p> </o:p>
<o:p> </o:p>
<o:p> </o:p>
分享到:
相关推荐
以上就是压缩包中的设计模式学习笔记涉及到的主要内容。通过对这些模式的理解和应用,开发者可以更好地解决软件设计中的问题,提升软件的质量和可维护性。每种模式都有其适用场景,理解其背后的意图和应用场景是关键...
这里我们聚焦于C#语言中的设计模式学习笔记,涵盖了多种经典的设计模式,如合成模式、桥梁模式、装饰模式、享元模式、门面模式、命令模式、工厂方法、策略模式、代理模式以及状态模式。下面将对这些模式逐一进行详细...
《设计模式学习笔记》主要探讨了GOF的23种设计模式以及类设计的基本原则,旨在帮助开发者理解和应用这些经过时间验证的成熟解决方案。设计模式是面向对象软件设计中的核心概念,它们为解决常见的设计问题提供了标准...
在这个学习笔记中,我们将深入理解简单工厂模式的概念、工作原理以及如何在实际编程中应用。 简单工厂模式的核心思想是通过一个公共的工厂类来创建不同类型的对象。这个工厂类负责识别客户端请求的对象类型,并返回...
这个“23种设计模式学习笔记”文档将引导你深入理解这些模式,并帮助你在实际编程中有效地应用它们。以下是对23种设计模式的详细解读: 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。它常用于控制...
《HeadFirst设计模式学习笔记》是一份详尽的资料,旨在帮助读者深入理解并掌握设计模式这一编程领域的核心概念。设计模式是软件工程中的一种最佳实践,它在解决常见问题时提供了一种标准的解决方案,使得代码更易于...
简单工厂模式是创建型模式的一种,它提供一个专门的工厂类用于创建对象,将对象的创建和使用分离。在简单工厂模式中,客户端通过工厂类的静态工厂方法来创建所需的具体对象。例如,图表工厂类可以根据参数创建不同...
以下是对“C#设计模式学习笔记”中涉及的一些关键知识点的详细解释。 1. **设计模式的基本概念**: 设计模式是一种在特定上下文中已被证明有效的解决方案模板,它描述了如何在软件设计中解决常见问题。设计模式...
这个压缩包文件包含了23种设计模式的学习笔记和源码,旨在帮助开发者深入理解并熟练运用这些模式。以下是对每种设计模式的详细解释,以及它们在Java编程中的应用。 1. **单例模式**:确保一个类只有一个实例,并...
简单工厂模式是一种创建型设计模式,它将对象实例化的责任集中在一个单独的工厂类中。这样做的好处是将业务逻辑与界面逻辑分离,降低了它们之间的耦合度。在实际应用中,当需要创建不同类型的对象时,通过工厂方法...
"GoF 23种设计模式学习笔记" 是一个深入探讨这23个经典设计模式的资源,这些模式最初由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位作者在1994年的著作《设计模式:可复用面向对象软件的基础》中...
Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可读性、可维护性和可复用性。这些模式是面向对象编程中的一种最佳实践,通过标准化的方式处理常见的设计问题。下面...
在这个“设计模式之美”的学习笔记中,我们将探讨一些主要的设计模式,以及它们在实际开发中的应用。 首先,我们从创建型模式开始。这类模式主要用于对象的创建,如单例模式(Singleton)、工厂模式(Factory ...
### Head.First 设计模式学习笔记知识点总结 #### 一、设计模式概述 设计模式是一种用于解决软件设计中常见问题的标准化方法。通过采用设计模式,开发者可以提高代码的复用性、灵活性和可维护性。《Head First 设计...
以下是一些在尚学堂300Java设计模式部分学习笔记中涉及的设计模式的知识点: 创建型模式: 创建型模式主要解决对象创建的问题,确保系统的灵活性和封装创建细节。学习笔记中提到了5种创建型模式: 1. 单例模式...
"工厂模式"是其中一种常用的设计模式,它提供了一种创建对象的最佳方式。在这个主题下,我们将深入探讨三种主要的工厂模式:简单工厂、工厂方法和抽象工厂。 1. **简单工厂模式**: 简单工厂模式是最基础的形式,...