E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
设计模式笔记
设计模式笔记
23. Visitor 访问者模式(行为型模式)
23. Visitor 访问模式 2008-09-26 动机 (Motivation) 在软件构建过程中,由于需求的改变,某些层次结构中常常需要增加新行为(方法),如果直接在基类中做这样的更改,将会给子类带来很繁重的变更负担,甚至破坏原有设计。 如何在不更改类层次结构的前提下,在运
·
2015-11-08 09:40
visitor
设计模式笔记
22. Strategy 策略模式(行为型模式)
22. Strategy 策略模式 2008-09-24 动机(Motivation) 在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担。 如何在运行时根据需要透明地更改对象的算法?将算法与对象本身解耦,从而避免上述问题? 意图(Inte
·
2015-11-08 09:39
strategy
设计模式笔记
21. State 状态模式(行为型模式)
21. State 状态模式 2008-09-22 动机 (Motivation) 在软件构建过程中,某些对象的状态如果改变,其行为也会随之而发生变化,比如文档处于只读状态,其支持的行为和读写状态支持的行为就可能完全不同。 &n
·
2015-11-08 09:38
设计模式
设计模式笔记
20. Memento 备忘录模式(行为型模式)
20. Memento备忘录模式 2008-09-18 对象状态的回溯: 对象状态的变化无端,如何回溯、恢复对象在某个点的状态? 动机 (Motivation) 在软件构建过程中,某些对象的状态在转换过程中,可能由于某种需
·
2015-11-08 09:37
备忘录模式
设计模式笔记
19. Chain Of Responsibility职责链模式(行为型模式)
19. Chain Of Responsibility职责链模式 2008-09-17 动机 (Motivation) 在软件构建过程中,一个请求可能被多个对象处理,但是每个请求在运行时只能有一个接受者,如果显式指定,将必不可少地带来请求发送者与接受者的紧耦合。
·
2015-11-08 09:37
chain
设计模式笔记
18. Observer 观察者模式(行为型模式)
18. Observer 观察者模式 2008-09-15 动机(Motivation) 在软件构建过程中,
·
2015-11-08 09:36
observer
设计模式笔记
17. Iterator 迭代器模式(行为型模式)
17. Iterator 迭代器模式 2008-09-09 动机(Motivation) 在软件构建过程中,集合对象内部结构常常变化各异。但对于这些集合对象,我们希望在不暴露其内部结构的同时,可以让外部客户代码透明地访问其中包含的元素;同时这种“透明遍历”也为“同一种算法在多种集合对象上
·
2015-11-08 09:35
iterator
设计模式笔记
16. Mediator 中介者模式(行为型模式)
16. Mediator 中介者模式 2008-09-09 动机(Motivation) 在软件构建过程中,经常会出现多个对象互相关联交互的情况,对象之间常常会维持一种复杂的引用关系,如果遇到一些需求的更改,这种直接的引用关系将面临不断的变化。 在这种情况下,我们
·
2015-11-08 09:34
media
设计模式笔记
15. Interpreter 解释器模式(行为型模式)
15. Interpreter 解释器模式 2008-09-07 动机(Motivation): 在软件构建过程中,如果某一特定领域的问题比较复杂,类似的结构不断重复出现,如果使用普通的编程方式来实现将面临非常频繁的变化。 在这种情况下,将特定领域的问题表达为某种语法规则下的句子,然后构建一个解释器来解释这样的句子,
·
2015-11-08 09:33
设计模式
设计模式笔记
14. Command 命令模式(行为型模式)
14.Command 命令方法模式 2008-09-02 耦合与变化: 耦合是软件不能抵御的变化灾难的根本原因,不仅实体对象与实体对象之间存在耦合关系,实体对象与操作之间也存在耦合关系。 动机(Motivation): 在软件构建过程中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合——比如需要对行为进行“记录
·
2015-11-08 09:32
command
设计模式笔记
13. TemplateMethod 模板方法模式(行为型模式)
行为型模式 13. Template Method 模板方法模式 2008-08-28 无处不在的Template Method: ——如果你只想掌握一种设计模式,那么它就是Template Method,这是李建忠老师说过的一句话,说明了Template Method这个模式的重要性和常用性
·
2015-11-08 09:31
template
设计模式笔记
12. Proxy 代理模式(结构型模式)
12. Proxy 代理模式 2008-8-23 间接与直接 人们对于复杂系统的软件系统常常有一种处理手法,即增加一层间接层,从而对系统获得一种更为灵活、满足特定需求的解决方案。 动机(Motivatio
·
2015-11-08 09:29
proxy
设计模式笔记
10.Facade 外观模式(结构型模式)
10. Facade 外观模式 2008-8-18 动机(Motivation) 上述A方案的问题在于组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统的演化,这种过多的耦合面临很多变化的挑战。 如何简化外部客户程序和系统间的交互接口?如何将外部客户程序的演化和内
·
2015-11-08 09:27
Facade
设计模式笔记
11. Flyweight 享元模式(结构型模式)
11. Flyweight 享元模式 2008-8-21 面向对象的代价: 面向对象很好的解决了系统抽象性的问题,同时在大多数情况下,也不会损及系统的性能。但是,在某些特殊的应用中下,由于对象的数量太大,采用面向对象会给系统带来难以承受的内存开销。比如图形应用中的图
·
2015-11-08 09:27
flyweight
设计模式笔记
9.Decorator 装饰模式(结构型模式)
9. Decorator 装饰模式 2008-8-16 动机(Motivation) 在某些情况下我们可能会“过度地使用继承来扩展对象的功能”,由于继承为类型引入的静态(编译时)特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀(多继承)。 如何使“对象功能的扩展”能够根据需要来动态(运行时)地实
·
2015-11-08 09:25
Decorator
设计模式笔记
8.Composite 组合模式(结构型模式)
8. Composite 组合模式 2008-8-14 动机(Motivation) 在某些情况下,客户代码过多地依赖于对象容器复杂的内部实现结构,对象容器内部实现结构(而非抽象接口)的变化将引起客户代码的频繁变化,带来了代码的维护性、扩展性等弊端。 如何将“客户代码与复杂的对象容器结构”解耦?让对象容器自己来实现自身的复杂结构,从而使得客户代码就像处理简单对象一样来处理
·
2015-11-08 09:24
设计模式
设计模式笔记
7.Bridge 桥接模式(结构型模式)
7. Bridge 桥接模式 2008-8-11 动机 (Motivation) 由于某些类型的固有逻辑,使得它们具有两个化的维度,乃至多个纬度的变化。 如何应对这种“多维度的变化多维度的变化”?如何利用面对象技术来使得类型可以轻松地沿着两个乃至多个方向变化,而不引入额外的复杂度? 意图(Intent) 将抽
·
2015-11-08 09:23
bridge
设计模式笔记
6.Adapter 适配器模式(结构型模式)
6. Adapter 适配器模式 2008-8-9 适配转换的概念无处不在。。。。 适配,即在不改变原有实现的基础上,将原先不兼容的接口转换为兼容的接口。 动机(Motivation) 在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。 如何应对这种“迁移的变化”?如何既能利用现有对象的良
·
2015-11-08 09:23
Adapter
设计模式笔记
4.Factory Method 工厂方法模式(创建型模式)
动机(Motivation) 在软件系统中,经常面临着创建对象的工作;由于需求的变化,需要创建的对象的具体实现经常面临着剧烈变化,但是它却拥有比较稳定的接口。 如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免客户程序和这种“具体对象创建工作”的紧耦合?从而保持系统中“其他依赖该对象的对象”不随着需求的改变而改变。 意图(Intent) 定义一个用于创建对象
·
2015-11-08 09:21
factory
设计模式笔记
5.Prototype 原型模式(创建型模式)
5.Prototype 原型模式(创建型模式) 2008-8-06 .NET提供了ICloneable接口,只要实现了其Clone方法,在其中执行复制对象的操作以创建新对象。。。 动机(Motivation) 在软件系统中,经常面临着“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是
·
2015-11-08 09:20
prototype
设计模式笔记
3.Builder 建造者模式(创建型模式)
3. Builder 建造者模式(创建型模式) 2008-7-29 Builder模式的缘起: 假设创建游戏中的一个房屋House设施,该房屋的构建有几个部分组成,且各个部分富于变化。 如果使用最直观的设计方法,
·
2015-11-08 09:19
builder
设计模式笔记
2.Abstract Factory 抽象工厂模式(创建型模式)
2. Abstract Factory 抽象工厂(创建型模式) 2008-7-24 工厂模式的缘起 常规的对象创建方法: // 创建一个Road 对象 Road road = new Road(); new的问题: ——实现依赖,不能应对“具体实例化类型”的变化。 解决思路: ——封装
·
2015-11-08 09:17
abstract
设计模式笔记
0.面向对象设计模式与原则
0. 面向对象设计模式与原则 面向对象的两个方向性思维——底层思维/抽象思维 向下,如何深入把握机器底层,从微观理解对象构造——底层思维 • 语言构造 • 编译转换 • 对象内存模型 • 运行机制 • …… 向上
·
2015-11-08 09:14
设计模式
设计模式笔记
1.Singleton 单例模式(创建型模式)
1. Singleton 单例模式(创建型模式) 模式分类 从目的来看: 创建型(Creational)模式:将对象的部分创建工作延迟到子类或者其他对象,从而应对需求变化为对象创建时具体类型实现引来的冲击。 结构型(Structural)模式:通过类继承或者对象组合获得更灵活的结构,从而应对需求变化为对象的结构带来的冲击。 行为型(Behavioral
·
2015-11-08 09:13
Singleton
.Net
设计模式笔记
-- 简单工厂模式
简单的说,简单工厂模式就是有一个类,这个类是一个专门产生类的类(~!@#$!#),先生产这个类的实例,然后调用其方法,传入一个值,传出一个对象,至于这个对象是哪个类的对象,就不知道了,得由类的工厂说了算。 配合类工厂工作的还是一个类,和这个类的若干子类,类工厂返回的就是这些子类的对象。因为这些子类都从其爸爸类那里来的。所以都有一些相似性。 算了,还是等我弄清楚再说吧。 us
·
2015-11-07 12:04
简单工厂模式
JohnConnor
设计模式笔记
(二) 程序世界里的复印机-原型模式与浅复制/深复制
-从这篇开始首先会分析的是设计模式中5个创建型模型的一些学习心得,文章最后会附上目录与进度表,希望大家多多支持多多推荐。 在没有复印机的时代,如果是你跑去西天取经,你觉得佛祖会让你直接把经书拉回家么,咱没金蝉子那么大的面子么.... 必然的结果就是抄书。你抄个十年八载的拉回大唐,原手抄版得保留作为典籍,但为了弘扬大乘佛法,就又得抄书,抄个几十万册然后分发给各大寺院。 在程序猿眼中
·
2015-11-01 11:50
设计模式
JohnConnor
设计模式笔记
(一) 学习设计模式之前你必须掌握的-看懂UML类图
JohnConnor
设计模式笔记
系列 目录 JohnConnor
设计模式笔记
(一) 学习设计模式之前你必须掌握的-看懂
·
2015-11-01 11:44
设计模式
设计模式笔记
[四种模式+四种原则]
A.简单工厂 :用一个单独的类来做这个创建实例的过程,这就是工厂 不符合开-封闭原刚,每次扩展都要更改工厂类 [计算器] 1.cbxType.Items.AddRange(new object[] { "正常收费","打八折","打七折","打五折"}); B,策略模式:定义多种算法,并分别
·
2015-10-31 10:54
设计模式
C#
设计模式笔记
最近看了一下C#设计模式,简单做了点笔记。在此也记录一下,权当备忘。 C#设计模式大体上讲分为三类,即:创建模式,结构模式和行为模式 创建模式:单件模式、工厂模式、抽象工厂模式、生成器模式、原型模式。 结构模式:适配器模式、桥接模式、组成模式、装饰模式、外观模式、享元模式、代理模式。 行为模式:中介者模式、命令模式、备忘录模式、状态模式、策略模式、解释器模式、迭代器模式、观
·
2015-10-31 09:16
设计模式
漫谈
设计模式笔记
:模板模式
场景: 为了回家过年,我们都要先买火车票,然后坐火车,最后才能和家人团聚。 程序: 这里我们写个简单程序模拟回家过年。新建了一个NewYear类,它有一个celebrateSpringFestival()的方法,我们把买票,坐车,回家庆祝都写在这个方法。 public class NewYear { public void c
·
2015-10-31 09:22
设计模式
设计模式笔记
之策略模式
策略模式:定义了算法簇,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 设计原则:(1)找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起 (2)针对接口编程,而不是针对实现编程 (3)多用组合,少用继承。 针对接口编程:真正意思是针对超类型编程。针对接口的关键在于多态。利用多态,程序可以针对超类型编程,执行时
·
2015-10-31 09:38
设计模式
设计模式笔记
感悟 - Creational篇
作者: 知明所以 • Milo 博客: http://www.cnblogs.com/jhzhu 邮箱:
[email protected]
日期: 2013年08月08日 1. Prototype Pattern ( 原型模式 ) 关键: 继承 ICanC
·
2015-10-30 12:35
设计模式
Asp.net
设计模式笔记
之三:业务逻辑层的组织
本章内容要点: 1.Transaction Script模式组织业务逻辑 2.Active Record模式和Castle Windsor来组织业务逻辑 3.Domain Model模式来组织业务逻辑 4.Anemic Model模式和Domain Model 来组织业务逻辑的差异 5.理解领域驱动设计DDD以及如何运用它让自己专注于业务逻辑而不是基础设施关注点 并非所
·
2015-10-28 08:25
asp.net
Asp.net
设计模式笔记
之一:理解设计模式
http://www.cnblogs.com/scy251147/p/3793547.html GOF设计模式著作中的23种设计模式可以分成三组:创建型(Creational),结构型(Structural),行为型(Behavioral)。下面来做详细的剖析。 创建型 创建型模式处理对象构造和引用。他们将对象实例的实例化责任从客户代码中抽象出来,从而让代码保持松散耦合,将创建复杂对象的责任
·
2015-10-28 08:23
asp.net
Asp.net
设计模式笔记
之一:理解设计模式
GOF设计模式著作中的23种设计模式可以分成三组:创建型(Creational),结构型(Structural),行为型(Behavioral)。下面来做详细的剖析。 创建型 创建型模式处理对象构造和引用。他们将对象实例的实例化责任从客户代码中抽象出来,从而让代码保持松散耦合,将创建复杂对象的责任放在一个地方,这遵循了单一责任原则和分离关注点原则。 下面是“创建型”分组中的模式: 1.Ab
·
2015-10-27 12:42
asp.net
Asp.net
设计模式笔记
之三:业务逻辑层的组织
本章内容要点: 1.Transaction Script模式组织业务逻辑 2.Active Record模式和Castle Windsor来组织业务逻辑 3.Domain Model模式来组织业务逻辑 4.Anemic Model模式和Domain Model 来组织业务逻辑的差异 5.理解领域驱动设计DDD以及如何运用它让自己专注于业务逻辑而不是基础设施关注点 并非所
·
2015-10-27 11:14
asp.net
设计模式笔记
——工厂模式
《Headfirst设计模式》中使用比萨做例子,我们这里也都用比萨举例。我们假设要开一家比萨店。工厂模式产生的压力主要来自于增加更多类型的比萨类。同时避免直接实例化对象,因为我们设计程序时应该面向接口编程。这样会让程序更容易维护和扩展,使其更有弹性。定义:工厂方法方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。遵守的原则:依赖倒置原则,就是要依赖
wode_dream
·
2015-10-23 14:00
设计模式笔记
——装饰者模式
应用场景举例:一碗普通的面条,加上几块红烧牛肉就是红烧牛肉面,再加上点辣椒就是香辣牛肉面,如果换成加老坛酸菜就是老坛酸菜面(这酸爽)。Java世界中的装饰者是I/O类,如InputStreamis=newLineInputStream(newFileInputStream("file.txt"));为什么要使用装饰者:1:防止类爆炸,因为除了上面提到的还有臊子面、油泼面,有微辣、中辣、特辣等等;2
wode_dream
·
2015-10-16 15:00
设计模式笔记
——观察者模式
应用场景举例:观察者模式就类似于日常生活中订阅报纸,当你订阅了报纸后,报社每次出版新的报纸,都会送到你家。 定义:观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。 实现:在Java中观察者模式有两个实现方法,一种是自定义实现,另一种是Java内置观察者。下面分别分析下两种实现方法。设计原则:1、为了交互对象之间的松耦合设计而
wode_dream
·
2015-10-14 15:00
设计模式笔记
(十一)--建造者模式、原型模式、单例模式
建造者模式(BuilderPattern)封装一个产品的构造过程,并允许按步骤构造。还有一个通俗的定义是:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。简单点说,就是客户类想要创建结构或者逻辑特别复杂的产品对象时,让建造者帮忙构建产品,建造者负责产品各个部件的构建以及最终产品的组装。客户类指示构造器按什么流程构造产品,并可以通过它得到最终构建好的产品。具体的构建者负责创
shangmingchao
·
2015-09-28 09:00
设计模式
建造者模式
生成器模式
设计模式笔记
(十)--小结
设计模式根据目的的不同可以分为创建型模式、结构型模式和行为型模式。创建型模式(CreationalPattern):为了灵活而高效地创建对象。包含:工厂方法模式(FactoryMethodPattern)、抽象工厂模式(AbstractFactoryPattern)、创建者模式/建造者模式(BuilderPattern)、原型模式(PrototypePattern)、单例模式(Single
shangmingchao
·
2015-08-29 22:00
设计模式
java设计模式
设计模式笔记
(九)--状态模式、代理模式
状态模式(StatePattern)允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。简单点说,一个对象持有一个状态对象来表示自己现在的状态,当有行为(动作请求)时,该对象会委托给当前状态对象处理,因当前状态对象的不同会表现出不同的行为。所以它利用对象组合来引用不同的状态对象,在客户看来就像修改了对象一样。像HeadFirst上说的,状态模式和策略模式是双胞胎,他们的类图是一样的,
shangmingchao
·
2015-08-27 10:00
设计模式
状态模式
设计模式笔记
——建造模式
定义:讲一个复杂对象的构建与它的表示相分离,使得同样的构建过程可以创建不同的表示。 将构造复杂对象的过程和组成对象的部件解耦使用情况,满足以下条件可以考虑使用建造模式搭建框架:1.产品有复杂的内部结构2.系统中对此产品的需求将来可能改变产品对象的内部结构构成3.不能将产品的内部构造完全暴漏给客户,一是为了可用性,二是为了安全因素建造模式的组成:1.抽象建造者角色(Builder):用来规范产品对象
Jacob_乔
·
2015-08-26 22:00
设计模式笔记
(八)--迭代器模式、组合模式
迭代器模式(IteratorPattern)提供一个方法顺序访问一个聚合对象中的元素,而不暴露其内部的表示。简单点说,Java集合框架中的集合:ArrayList、LinkedList、Vector、Stack、HashMap、HashTable等容器,还有对象数组,要想遍历出里面的所有对象基本每个容器有每个容器的遍历方式,现在我们想不管用什么容器存储这些对象,我都用相同的方式进行遍历。因此,我们
shangmingchao
·
2015-08-26 15:00
设计模式
迭代器模式
组合模式
设计模式笔记
——单例模式
单例模式,又叫单态模式或者单件模式。定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例通常用来代表那些本质上具有唯一性的系统组件(资源)。目的:控制特定的类只产生一个对象。单例模式可以分为有状态和无状态的。有状态的单例对象一般也是可变的单例对象,多个单例对象在一起可以作为一个状态仓库向外提供服务。没有状态的对象就是不变的单例对象,仅仅作用提供工具函数。饿汉式:先new出来实例,再返回
Jacob_乔
·
2015-08-25 21:00
设计模式笔记
(七)--模板方法模式
模板方法模式(TemplateMethodPattern)在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。简单点说,超类的模板方法中定义了一个算法的步骤,并允许子类为一个或多个步骤提供实现。这样模板方法就控制并保护了算法,算法中的步骤可以由超类实现,也可以由各个子类根据自己的需要实现(在超类中声明为abstract)
shangmingchao
·
2015-08-25 17:00
设计模式
模板方法模式
设计模式笔记
(六)--适配器模式、外观模式
适配器模式(AdapterPattern)将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。简单点说,就是利用适配器将不符合自己期望的接口转成自己想要的接口。对象适配器:类适配器:还是先看一下背景:对于客户电脑来说,有一个双孔插头,所以需要一个双孔插座来插上供电,也就是说,需要一个双孔接口(上图中的目标接口)。但是,离你最近的插座只有三孔的,那怎么办呢,把它换成两
shangmingchao
·
2015-08-25 16:00
设计模式
适配器模式
设计模式笔记
——工厂模式
工厂模式主要是为创建对象提供过度接口,以便将创建对象的具体过程隔离,从而达到提高灵活性的目的分类一:简单工厂模式,工厂方法模式,抽象工厂模式 逐步抽象分类二:工厂方法模式(包括简单工厂模式),抽象工厂模式1.简单工厂模式又称静态工厂方法模式,存在目的:定义一个用于创建对象的接口。组成:工厂类角色:核心,含有一定商业逻辑和逻辑判断。抽象产品角色:由产品继承的父类或者实现的接口。具体产品角色:工厂类所
Jacob_乔
·
2015-08-24 21:00
设计模式笔记
(五)--命令模式
命令模式(CommandPattern)将请求封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。命令模式的目的就是让发出请求的对象和执行请求的对象解耦。还是先看一下背景:看上面的图,客户想要执行某个接收者的操作,比如说顾客想要厨师给自己做一个汉堡,这个命令也隐含着厨师做汉堡的操作,他就告诉调用者也就是服务员我点一份汉堡,服务员收到这个点餐命令并放到柜台说订单
shangmingchao
·
2015-08-21 16:00
设计模式
命令模式
设计模式笔记
(四)--工厂方法模式、抽象工厂模式
工厂模式(FactoryPattern)(1)简单工厂(SimpleFactory)应该都注意到了,这里没有使用模式(Pattern)的字眼,因为简单工厂更像是一种编程习惯,而不是严格意义上的设计模式。先说一下客户类怎么使用:直接Pizzapizza=PizzaFactory.createPizza("cheese");就可以获得CheesePizza类型的披萨了(PizzaFactory的静态方
shangmingchao
·
2015-08-20 17:12
Java
设计模式
工厂模式
工厂方法模式
抽象工厂模式
上一页
7
8
9
10
11
12
13
14
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他