设计模式
autoliuweijie
这个作者很懒,什么都没留下…
展开
-
[转]《设计模式》python实现
原文: http://www.cnblogs.com/wuyuegb2312/archive/2013/04/09/3008320.html一、简单工厂模式模式特点:工厂根据条件产生不同功能的类。程序实例:四则运算计算器,根据用户的输入产生相应的运算类,用这个运算类处理具体的运算。代码特点:C/C++中的switch…case…分支使用字典的方式代替。 使用异常机制对除数为0的情况进行处理转载 2015-12-16 11:33:29 · 648 阅读 · 0 评论 -
设计模式:1. 门面模式(Facade)
Facade Pattern1. 介绍1.1 针对问题系统复杂某个系统或者类过于复杂, 使用者需要详细了解内部结构才懂得使用.1.2 解决方法UML图1.3 优点降低用户使用系统的难度用户不需要对系统内部有足够多的了解, 只需要简单地设置即可.2. 例子2.1 需求需求描述照相机需要设置闪光灯, 焦距, 光圈等参数才可以使用. 调节这些参数配合需要专业的知识, 设计一套方案使得调用者只原创 2016-01-14 16:04:04 · 632 阅读 · 0 评论 -
设计模式:0. 设计原则
0. 写在前面本项目为研一时《设计模式》课程的总结与扩展,课程教授为北京大学软件工程中心王亚沙教授,参考书为王老师的课件以及四人帮的《设计模式-可复用面向对象软件的基础》。我将在本工程中用C++语言和python语言实现一些常用的设计模式,用于巩固理解和后续查询。另外值得一题的是,许多设计模式是基于java或c++给出的,用来弥补编译器层面上的语言不足。而python这类的高级语言有的时候以及将这些原创 2015-12-16 12:31:36 · 534 阅读 · 0 评论 -
设计模式: 8. 模版方法模式(Template Method)
1. 介绍1.1 针对的问题不同程序员间随意设计某个功能需要应对不同情况进行多个实现, 但是不同的程序员设计会导致每个情况程序设计的风格差很多, 还很不规范.重复设计严重有些设计在不同场合是可以复用的, 程序员只要重写那些无法复用的部分即可.1.2 解决方法Template Method制作一个模版, 不同情况的设计都按照统一的模版来写. 可以复用的部分就不用写. 只要重写一个个功能模块就可原创 2016-01-20 11:19:29 · 408 阅读 · 0 评论 -
设计模式: 7. 观察者模式(Observer)
1. 介绍1.1 针对的问题相同内容多种展示形式一个内容, 可以有多种展示形式. 例如某各数据, 既可以用表格, 也可以用柱状图,饼状图来展示. 如何保证内容与展示统一, 且即时更新.1.2 解决方法Observer将内容与展示分开, 一旦内容有改变, 就通知展示回来取内容并重新刷新.UML图1.3 优点内容与展示分隔开将内容与展示分隔开, 保证了各个展示的内容统一.即时更新内容一旦改原创 2016-01-20 11:16:46 · 692 阅读 · 0 评论 -
设计模式:6. 装饰器模式(Decorator)
1. 介绍1.1 针对的问题在程序允许中改变一个类一个已有的类的某些特性需要在程序运行过程中才能决定.属性或方法的组合某些类要有一些方法和属性的组合.1.2 解决方法Decorator用装饰器可以改变一个类的属性或方法, 也可以给一个类添加方法或属性.给一个类的对象作用多个装饰器, 可以实现各种属性或方法的组合.UML图1.3 优点运行时改变类的特性在运行时决定类的特性.属性或方法组原创 2016-01-20 11:14:56 · 460 阅读 · 0 评论 -
设计模式: 5. 抽象工厂模式(Abstract Factory)
1. 介绍1.1 针对的问题对象的创建与使用混乱创建对象时直接调用该类, 这样是不好的.固定搭配几种对象之间有固定的搭配, 不能出现混乱.1.2 解决方法Abstract Factory设计一个抽象的工厂, 要创建对象时用这些工厂里的create方法创建, 而不是直接调用该类.一个工厂固定只能创建某些对象的组合, 防止出现不符合逻辑的搭配.UML图1.3 优点创建与调用分离规范了调用者原创 2016-01-20 11:11:08 · 422 阅读 · 0 评论 -
设计模式:3. 策略模式(Strategy)
1. 介绍1.1 针对的问题多种策略组合在实际中我们经常会发现一个问题有多种可选的策略,这些策略在概念上具有相同的功能,但是适用于不同的环境如果我们简单的使用继承关系来对这些策略上的差异进行建模,可能会导致很多问题:类的个数迅速失控代码大量重复、冗余复用无法进行1.2 解决方法Strategy将各种策略做一个各自抽象, 然后组合到具体的类中. 这样就可以在不同种策略中做组合.UML图1.原创 2016-01-20 11:05:39 · 506 阅读 · 0 评论 -
设计模式: 4.桥接模式(Bridge)
1. 介绍1.1 针对的问题一个抽象有多种实现要实现一个功能, 不同情况下调用的实现接口不一样. 笨的方法是针对不同情况各设计一个类, 这违背了”一个设计决策只实现一次”的思想.1.2 解决方法Bridge将各自实现方法的接口抽象成一个统一的抽象接口, 功能实现只要调用这统一的接口接口. “依赖于抽象而不依赖于具体的实现”UML图1.3 优点避免了重复设计如果对不同的环境都各设计一个类,原创 2016-01-20 11:08:03 · 568 阅读 · 0 评论 -
设计模式:2.适配器模式(Adapter)
Adapter Pattern1. 介绍1.1 针对的问题接口无法使用有一些现成的类, 已经完成了我们需要的功能, 但是由于一些特殊的原因, 无法按照我们的意愿使用其接口.这个期望的接口, 通常我们无法修该.1.2 解决方法Adapter将一个类的接口转换成客户希望的另一个接口, 就是在已有类上包装一层, 形成新的类, 这个新的类就是Adapter, 原本已有的类就是Adaptee.UML图原创 2016-01-20 11:01:18 · 451 阅读 · 0 评论 -
<设计模式>系列汇总 By python and C++
1. 说明:本项目为研一时《设计模式》课程的总结与扩展,课程教授为北京大学软件工程中心王亚沙教 授,参考书为王老师的课件以及四人帮的《设计模式-可复用面向对象软件的基础》。我将在 本工程中用C++语言和python语言实现一些常用的设计模式,用于巩固理解和后续查询。项目地址:https://code.csdn.net/autoliuweijie/designpatterns2. 目录原创 2016-01-20 11:27:10 · 431 阅读 · 0 评论