`

看别人关于设计模式的文章很深刻,不是很明白

阅读更多
虽然自认为自己对设计模式已经很了解了,但是从来没有系统的看过设计模式相关的书,最近在公司发现一本<java与模式>,正好系统的看一下,下面是这几天记的笔记.(并不是系统的讲解书中的内容)
一? 综述:
1、不要使用接口定义常量
2、自己少用标志接口
3、不要继承具体类
4、类层次的中间节点应该是接口或者抽象类,叶子是具体类
5、子类应当扩展父类的责任,而不是覆写父类的责任
6、面向接口编程
7、不要滥用继承,组合优先于继承

java中设计不当的类:calendar:作为接口,含有与具体的历法(罗马历法)相关的常量,不能扩展到中国的阴历历法(不符合开闭原则)
??????????????????? properies类:滥用继承,继承至hashtable,应当使用聚合

8、笛比特法则:只与自己的直接朋友通信,不与陌生人通信(1)狭义笛比特法则:只与朋友通讯,通过自己的朋友传递间接的调用(2)结合依赖倒转原则修改:不必通过朋友传递间接的调用,通过陌生人的抽象接口调用陌生人的行为(依旧不能与具体的陌生人发生通信)
9、尽量降低类中成员的访问权限,不要设计退化类(类似c中struct)。
??????? java中的point2D以及Dinmension2D类有这种设计缺陷(不过这种情况问题不大)
10、如果多个具体的产品类没有共同的商业逻辑,就可以把它们抽象到一个接口中,如果有共同的商业逻辑,就把共同的部分抽象到抽象类中,共同的部分尽量向类继承层次的上层移动,以达到复用的目的
二?? 工厂模式
1、简单工厂模式:参与角色:工厂/抽象产品类/具体产品类

?? 缺点:添加新产品的时候,虽然产品相关代码符合开闭原则,但对工厂类本身并不符合,需要修改其中的产生产品方法或者添加新的产生方法(工厂里实现的不同造成的修改不同)来支持新的产品类
?? 退化方式:省略掉工厂角色,抽象产品类担任具体产品类的工厂角色:提供静态的getInstance方法,比如java类库中的DateFormat类,(本人认为这样很不符合开闭原则,父类中出现与具体子类相关的代码,不方便扩展,添加新产品的时候,修改的时候缺点与原简单工厂的工厂角色类似)

2、工厂方法模式:参与角色:抽象工厂类/具体工厂类/抽象产品类/具体产品类
???? 消除了简单工厂的缺点


3、抽象工厂模式:简单工厂模式与工厂方法模式的结合

4、单例模式:饿汉和懒汉两种,前者将本身对象作为静态私有属性事先生成,后者推迟到调用的时候,后者需要考虑多线程的时候,前面需要加线程安全关键字(注意),java中还是前者为优。
?? 不要滥用单例,只有系统要求只有一个类的实例的时候才调用
?? 有的单例可能有状态属性,这就为多例模式提供了可能
?? 含有私有属性的类作成单例的时候尤其要注意:一是私有属性的线程安全,确实需要的时候可以加线程安全关键字,比如系统中的log类,二是确认这些属性是不是可以所有线程共享的,类似普通类的static
三?? 各种具体模式(1)
1、建造模式:参与角色4个:指导者、抽象建造对象、具体建造对象、产品
????? 一个复杂的产品有很多的零部件,就可以使用具体的建造对象来一一构造
2、原始模式:深拷贝、浅拷贝
3、适配器模式:将adaptee类适配成目标接口
4、合成模式:参与角色:composite接口、树枝节点类、树叶节点类
????? 分成透明式和安全式两种,各有优缺点
????? (1)前者将管理子对象的方法放到接口中,这样树型结构中的所有对象都是透明的,都可以统一调用,但是叶节点并没有管理子对象的能力,因此透明但不安全
????? (2)后者将管理子对象的方法下放到树枝节点类中,这样安全但不透明
5、装饰模式:继承已有类的接口,提供和已有类相同的方法,并对已有类的功能提供扩展(通过组合已有对象,调用已有对象方法的时候加入新的代码)
????? (1)透明的装饰模式(纯粹的装饰模式):装饰类、被装饰类继承于同一接口,而且装饰类只实现接口的方法,不提供额外方法的实现,调用该类的时候使用接口声明调用(实例化当然还是自己的构造函数),即该类的所有方法都是透明的
????? (2)半透明的装饰模式(退化的装饰模式):装饰类、被装饰类继承于同一接口,装饰类不仅实现接口的方法,还提供额外方法的实现,这样要调用它独特的方法的时候就必须使用它本身来调用,退化到一半装饰模式、一半适配器模式。

分享到:
评论
2 楼 beyondsanli 2007-04-13  
懒汉就是
private static Singleton singleton=null;

public static Singleton getInstance()
{
if(singleton==null)
singleton=new Singleton();
return singleton;
}
1 楼 beyondsanli 2007-04-13  
4、单例模式:饿汉和懒汉两种,前者将本身对象作为静态私有属性事先生成,后者推迟到调用的时候,后者需要考虑多线程的时候,前面需要加线程安全关键字(注意),java中还是前者为优。
public class Singleton
{
//private static Singleton singleton=null;
用这个方式定义,然后在getInstance()中定义获取对象,说严格说不是singleton怎么理解呢,是不是不是类对象了呢!对象的产生的时间不对呢!
private static Singleton singleton=new Singleton();
private Singleton()
{
System.out.println("has been a object.");
}
public static Singleton getInstance()
{
return singleton;
}
}
public class Main
{
public static void main(String[] args)
{
System.out.println("start");
Singleton obj1=Singleton.getInstance();
Singleton obj2=Singleton.getInstance();
if(obj1==obj2)
{
System.out.println("obj1 and obj2 are same object");
}
else
{
System.out.println("obj1 and obj2 are not one object instance");
}
System.out.println("End")
}
}

相关推荐

    设计模式之总结与回顾

    最近这段时间正好是职业空档期,没什么事儿做,就把之前看过的设计模式翻出来整理了一 下,于是就有了上面几篇文章。整理设计模式的过程,也是一个深刻理解面向对象设计的过程。通过对各个模式的回顾,让我更能够...

    从百草园到三味书屋资料公开课一等奖教(学)案.doc

    这篇文章不仅仅是对作者个人成长的回顾,也是对一个时代教育模式和童年记忆的深刻反思。在教学中,这篇散文被广泛用于培养学生的文学鉴赏能力,激发他们对知识的渴望,并通过文学作品感受历史的痕迹。 教学过程中,...

    离太阳最近的树.doc

    通过讲解与引导,使学生明白文章的叙述逻辑和层次。红柳的生存环境和它所遭受的破坏,以及人们对红柳的态度变化,都构成了文章的骨架。教师需引导学生分析红柳的悲剧如何与人类活动相关联,进而理解文章所表达的人与...

    “CAD_CAM_CAPP_CAE课程综合训练”教学探索.pdf

    CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAPP(计算机辅助工艺规划)和CAE(计算机辅助工程分析)是一系列紧密相关的工程技术,它们在现代制造业中扮演着至关重要的角色。这些技术不仅极大地提高了设计和...

    六年级语文上册 数鸡教案2 浙教版-浙教版小学六年级上册语文教案.doc

    《数鸡》作为浙教版小学六年级上册语文课程的一部分,其目的在于通过一篇关于农村生活的课文,引导学生深入理解和领会文章的中心思想,并学习如何分析和概括文本内容。本篇教案的设计紧密围绕教学目标,通过三个部分...

    22、《跑进家来的松鼠》.ppt

    通过设计一系列的教学活动,比如快速阅读找出趣事、讨论松鼠行为背后的意义、角色扮演对话、创作个人的动物故事等,教师能够多角度、多层次地帮助学生深入理解和欣赏文章内容。同时,这些活动也是培养学生的观察力、...

    鱼游到了纸上教学设计.doc

    在当代语文教学中,《鱼游到了纸上》这篇课文以其生动的情节和深刻的主题,成为培养学生情感态度与价值观的经典教学案例。本文旨在详细阐述如何通过这篇课文的教学设计,使学生深入理解课文内容,领会作品的深层含义...

    心得体会关于推进“MS—EEPO有效教育”语文课堂教学改革初中实验学校活动的心得体会.doc

    通过这次推进“MS—EEPO有效教育”语文课堂教学改革的初中实验学校活动,我深刻体会到教育模式创新对于提升教学质量的重要性。MS—EEPO(Multi-Style Effective Education for the Preparation of Our Future)是一...

    第三板块大孔雀蛾的晚会 (2).ppt

    这种分析不仅帮助学生把握文章的结构,还让他们明白了文章的重点和层次。 描写手法是文学作品的重要组成部分,本教学计划通过对比直接描写和侧面衬托,让学生了解不同的写作技巧,并分析这些写作手法的优劣,以此...

    五上语文《通往广场的路不止一条》.ppt

    文章内容生动,富含哲理,不仅是一堂语文知识的课,也是一堂关于生活智慧和思想方法的课。 文章开篇即提出了明确的学习目标,使学生明白学习的方向。课文要求学生不仅要理解并正确运用新的词语,而且要深入理解课文...

    秋六年级语文上册 第七单元 25 养成读报的好习惯教案设计 苏教版-苏教版小学六年级上册语文教案.docx

    每个环节的设计都旨在引导学生逐步深入理解文章内容,并学会从中获取信息的方法。 **知识点9:教学反思** - **内容解析**:在教学结束后,教师需要进行反思,总结学生在学习过程中的表现和进步之处,同时也需要...

    五年级语文下册《口语交际 习作一》教学设计参考一 新人教版-新人教版小学五年级下册语文教案.doc

    教师亲自示范写作,用自己精心撰写的下水作文帮助学生深入理解如何撰写具有深刻意义和情感的文章,从而使学生在交流和合作中体验到学习的乐趣。 此外,课程的另一亮点是教授学生书信的收寄知识,包括如何正确填写...

    五柳先生传教案.doc

    在教学设计上,应着重讲解五柳先生的性格特点和精神气质,让学生明白,文中的五柳先生代表了一种与世无争、追求精神自由的生活态度。通过文本分析,教师可以结合冯友兰先生的读书四步骤,即“精取选、解其言、知其意...

    苏教五年级语文下习作PPT学习教案.pptx

    在文章结构安排上,本教案提倡“凤头”、“猪肚”、“豹尾”的写作模式。即文章开头要新颖独特,能够吸引读者的注意力;主体部分内容要充实详实,展现文章的深度和广度;结尾则要简洁有力,给读者留下深刻印象。这种...

    自主广场(宇宙的未来) (宇宙的未来)教案5新人教必修五.doc

    通过对一段关于宇宙航行的科普文章的学习,学生不仅能够锻炼自己的阅读理解能力,还能获取关于宇宙探索的最新科学知识。例如,通过对核推进系统的了解,学生能够明白太空探索的科学原理和实际应用,增强科学素养。...

    14[1]通往广场的路不止一条课件.ppt

    在探讨人生哲理与成长的过程中,《通往广场的路不止一条》这篇充满智慧与启示的文章,以作者自身的生活经验为蓝本,为我们描绘出面对困境与挑战时,如何通过创新与坚持走向成功的生动图景。文章通过两个引人深思的...

    河南省南乐县城关中学七年级语文件PPT学习教案.pptx

    在文章结构与写作技巧的探讨上,教案引导学生通过细致的分析,明白在写作中详略得当的重要性。教师通过举例周素珊的散文和对比其他人物的第一次,如杨利伟的太空之旅与刘翔在田径场上的突破,揭示了“第一次”经历在...

    《皇帝的新装》教学案例新设计.doc

    此外,通过讨论文章的结尾,学生们认识到小孩子敢于说真话的勇气,并从中受到启发,明白真实和勇敢的重要性。教师还引导学生进行想象活动,如设想不同情境下的对话,这有助于学生开拓思维,学习如何进行合理且富有...

Global site tag (gtag.js) - Google Analytics