一、创建模式
<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>
分享到:
相关推荐
设计模式学习笔记(一)--简单工厂模式源码和类图
共150讲,时长共 33...1) 内容包括: 设计模式七大原则(单一职责、接口隔离、依赖倒转、里氏替换、开闭原则、迪米特法则、合成复用)、UML类图(类的依赖、泛化和实现、类的关联、聚合和组合) 23种设计模式包括...
《C++20设计模式》学习笔记-第3章工厂方法和抽象工厂模式学习代码
定义: 结构说明: 相关概念: 接口: 接口与抽象类的区别: 面向接口编程: 功能: 时序图: 优缺点: 代码阐释:
工厂模式和单例模式(https://www.jb51.net/article/184230.htm)应该是设计模式中应用最多的模式了,工厂模式的定义:提供创建对象的接口(来自百度百科:http://baike.baidu.com/view/1306799.htm),意思就是根据...
工厂模式,策略模式,装饰模式,代理模式,工厂方法模式,原型模式等23个设计模式
1. 创建型模式:创建型模式关注对象的创建过程,包括简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式和单例模式。这些模式可以帮助我们更灵活地创建对象,避免直接使用new关键字来创建对象,降低...
在PHP学习中,收集了一些常用的编程方法和思想,集中详细的记录了9种设计模式的设计思路和用法。比如:工厂模式,单例模式,注册模式,适配器模式,观察者模式等
JavaScript常见的一些设计模式学习笔记和代码实现。包括工厂模式、单例模式、代理模式、发布订阅模式、中介者模式等等内容。
:check_mark:简单工厂模式( Simple Factor Pattern ) :memo: , :check_mark:工厂方法模式( Factory Method Pattern ) :memo: , :check_mark:抽象工厂模式( Abstract Factroy Pattern ) :memo: , :check_...
该文档是自己在学习设计模式时整理的常用设计模式pdf文档,包括源码,包括装饰模式,代理模式,责任链模式,命令模式,解释器模式,迭代器模式,备忘录模式,观察者模式,工厂模式,建造者模式,适配器模式,桥梁...
详述设计模式之工厂模式,包括简单工厂,工厂方法,描象工厂的学习笔记,都附带有例子源代码
普科国际软件一个学院的学习笔记,有3个文件word文档,文本,还有factory-demo源文件代码
针对几种经典软件设计模式:模板方法模式 外观模式 代理模式 装饰器模式 桥模式 工厂方法模式 组合模式等给出了简单易懂的讲解,透彻明了。很好的学习资料哦,是我平时学习时做的笔记外加自己的理解,很不错的……
设计模式学习笔记,此项目参考《大话设计模式》,只能作为入门级设计模式学习 设计原则 职责单一原则 开放-封闭原则 依赖倒转原则 高层模块不依赖底层模块,两个模块都应该依赖抽象。抽象不依赖细节,细节依赖抽象。...
是我在学习设计模式时整理的,其中一些是我自己学习,很多来自网络.希望对模式有兴趣的朋友有帮助,我会很高兴.
23种经典设计模式的分析,针对Java写的,自己的一些感悟, 与大家分享
最新设计模式超级详解课程,课程深入浅出的探讨了设计模式总览,创建型模式、结构型模式、行为模式的...├─day01-总览设计模式-06-创建型模式-工厂-简单工厂模式.mp4 ├─day01-总览设计模式-07-创建型模式-工厂-工厂