设计模式随笔

设计模式的定义:

模式是在某种情境下,针对某问题的某种解决方案。

这里面关键的就是问题,情境,解决方案

模式应该是可以重复利用的。

面向对象设计的原则:

封装变化

找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混合在一起。

如果新的需求过来,都会使某方面的代码发生变化,那么你就可以确定,这部分代码需要被抽离出来,和其他稳定的部分有所区别。这样一来,以后新的需求过来

就可以轻易地只改动或者扩充这个部分,而不影响其他不需要变化的部分。

多用组合,少用继承

1、子类对父类的继承式全部的公有或受保护的继承,这样的话子类可能继承了对子类无用或者有害的父类。也就是说可能子类并不想要父类的方法怎么办(例如矩形和正方形)

2、继承的子类实际上是运行时就确定下来了,满足不了运行时确定下来的要求,运用组合可以非常灵活,可以在运行时才决定某个对象。

针对接口编程,而不要针对实现编程

一个简单的例子,比如ICDComm的接口发送消息和接受消息。

为交互对象之间的松耦合设计而努力

这样我们可以建立有弹性的OO系统,能够应对变化,因为对象之间的依赖程度降到了最低。

类应该对扩展开放,对修改关闭(开闭原则)

我们的目标就是允许类更容易扩展,在不修改现有代码的情况下,就可以适配新的行为。这样就可以使用更多改变,可以接受改变来应对新的需求。

依赖抽象,而不依赖具体类(依赖倒置原则)

依赖倒置原则中的倒置是指和一般的OO设计的思考方式完全相反。高层和底层的实现都依赖相同的抽象。

只和朋友交谈

别找我,我会去找你

类应该只有一个改变的理由

抽象工厂的任务是定义一个负责创建一组产品的接口,这个接口内的每个方法多可以创建一个具体的产品,同时我们利用实现抽象工厂的子类来提供这些具体的做法。所以在

抽象工厂中利用工厂方法实现生产方法是很自然的。

简单工厂主要是为了解耦,针对接口编程而不是针对实现编程。

时间: 2024-10-09 17:54:33

设计模式随笔的相关文章

Java设计模式随笔

大家都知道Java23种设计模式,大神总结如下: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 各种设计模式的原理和要点大神zhangerqing的原创博文系列已有讲解,贴一下,遗忘了就去复习 http://blog

设计模式随笔之——单列模式

一.单例模式的定义: 单例模式是一个比较简单的模式,其定义为:确保某一个类只有一个实例,而且自行实例化并像整个系统提供这个实例.单例模式大致可以分为:饿汉式和懒汉式. 以下关于单例模式的优点.缺点.使用场景摘自<设计模式之禅> 二.单例模式的优点: 1.由于单例模式在内存中只有一个实例,减少了内存开支,特别是一个对象需要频繁的创建.销毁,而且创建或销毁时性能无法优化,单例模式的优势就更加明显. 2.由于单例模式只生成一个实例,所以减少了系统性能开销,当一个对象产生需要较多资源时,如读取配置.产

理解设计模式(策略)

策略模式: 环境驱使程序选择策略,策略决定程序行为. 特定环境 一个系统需要动态地在几种算法中选择一种 算法要对使用者透明时 一个类含多个逻辑流程,而实际执行时,只选择其中一种 一类问题 需要将同一流程下的多个分支逻辑,封装为对象 解决方案 策略模式,有3个角色: : 环境类 Context, 封装策略接口引用,执行时指定采用策略,具体类实现 :策略接口 Strategy, 策略行为规范,一般由抽象类或接口实现 : 具体策略接口 ConcreteStrategy, 实现策略接口,由具体子类实现

设计模式(博客园精化集)

Web Client Software Factory系列(3):View-Presenter模式作者: TerryLee .NET设计模式(18):迭代器模式(Iterator Pattern)作者: TerryLee .NET设计模式(19):观察者模式(Observer Pattern)作者: TerryLee .NET设计模式(2):单件模式(Singleton Pattern)作者: TerryLee .NET设计模式(3):抽象工厂模式(Abstract Factory)作者: Te

【设计模式】桥接模式 Bridge Pattern

开篇还是引用吕振宇老师的那篇经典的文章<设计模式随笔-蜡笔与毛笔的故事>.这个真是太经典了,没有比这个例子能更好的阐明桥接模式了,这里我就直接盗来用了. 现在市面上卖的蜡笔很多,各种型号,各种颜色种类繁多, 假如一盒蜡笔有24种颜色,那么它能涂抹出24种不同的颜色来,蜡笔型号是固定的,如果想画出各种线条那么就要购买不同型号的蜡笔,假如我们要涂抹出粗,中,细三种线条,那么我们就要买3盒粗,中,细型号的蜡笔才能满足需求,那么就是3盒*24色=72只蜡笔.假如使用毛笔来作画,我们需要准备3只粗,中,

Double Dispatch讲解与实例

引言 说实话,我看过GoF<Design Patterns>,也曾深深的被李建忠<设计模式>系列Webcast.但是还没有见过“Double Dispatch模式”.的确GoF提及的设计模式只是最初对设计模式的系统介绍,它不可能涵盖所有的模式.另外随着时间的流逝,技术日新月异的变化,技术大牛们又总结出了许多新的模式. 今天所介绍的Double Dispatch模式,从时间上来看,已不是新的设计模式:但对于只看过GoF设计模式的技术同仁来说,也算是一个新的设计模式. 什么是Doubl

Java Web 工作技巧总结 16.10

摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! 在你成为领导者以前,成功只同自己的成长有关.当你成为领导者以后,成功都同别人的成长有关. 1.聊聊并发插入&代码 场景:业务中有些ERP第三方调用该接口,导致多组同样的数据包会调用同一个插入接口.一般都是XXXParamList,一个批量插入的接口. 首先聊聊批量插入的代码,一般都会这样搞,伪代码 for(XXXParam xxx : XXXParamList)validationXXXPar

从桥接模式与策略模式谈起(转载)

原文地址:http://www.blogjava.net/wangle/archive/2007/04/25/113545.html 从桥接模式与策略模式谈起 桥接(Bridge)模式是结构型模式的一种,而策略(strategy)模式则属于行为模式.以下是它们的UML结构图. 在桥接模式中,Abstraction通过聚合的方式引用Implementor. 在策略模式中,Context也使用聚合的方式引用Startegy抽象接口. 从他们的结构图可知,在这两种模式中,都存在一个对象使用聚合的方式引

设计模式学习随笔

策略模式随笔 设计模式是解决某些问题的通用解决方案:这些模式不是代码而是一种类似经验的方法. 设计模式中最好的方法就是实践中尝试套用这些模式,让以后的程序在使用中变的更加容易维护,扩展,变化,复杂. OO是设计原则,设计模式是具体的方法和工具. 策略模式的原理: 模拟鸭子的游戏: 面向对象中设计这个鸭子的超类和扩展类: public abstract class Duck{ public Duck(){ } public void Quack(){ System.out.println("~~g