《程序设计模式》结课论文
2012 — 2013学年 第学期
论文题目 Java设计模式
学生姓名
学 号
专业班级
指导教师
20xx年 7 月 5 日
策略模式
题记:一个设计模式是针对某一类问题的最佳解决方案,而且已经成功应用于许多系统的设计中,它解决了在某种特定情境中重复发
生的某个问题,因此设计模式可以被定义为:设计模式是从许多优秀的软件系统中总结出成功的可复用的设计方案。策略模式就是众多优秀模式的一种。
一、策略模式的概述:
方法是类中的最重要的组成部分,一个方法的方法体有一系列语句构成,也就是说一个方法的方法体是一个算法。在某些设计中一个类的设计人员经常将可能涉及这样的问题:由于用户的需求变化,导致经常需要修改类中某个方法的方法体,即不需要不断变化算法。 策略模式就是处理算法不同变体的一中成熟模式,策略模式通过接口或是抽象类封装算法的标示,即在接口中定义一个抽象方法实现该接口的类将实现接口中抽像的方法。策略模式把针对一个算法标示的一系列具体算法分别封装在不同的类中,使得各个类给出的具体算法可以互相转换。
二、策略模式的定义
策略模式的别名是政策,是定义一系列算法,把他们一个个封装起来的并且使他们可以互相替换。本模式使得算法可以独立于使用它的客户而变化。
策略模式就是处理算法不同变体的一中成熟模式,策略模式通过接口或是抽象类封装算法的标示,即在接口中定义一个抽象方法实现该接口的类将实现接口中抽像的方法。策略模式把针对一个算法标示的一系列具体算法分别封装在不同的类中,使得各个类给出的具体算法可以互相转换。
三、策略模式的结构和使用
1、策略模式的结构:
策略模式的结构中包含三种角色:
.策略(Strategy):策略是一个接口‘该接口定义若干个算法标示,即定义了若干个抽象方法。
.具体策略(ConcreteStrategy):具体策略是实现策略接口的类。具体策略实现策略借口所定义的抽象方法,即给出算法标示的具体算法。 .上下文(Context):上下文是依赖于策略接口的类,即上下文包含有策略的声明的变量。上下文中提供一个方法,该方法委托策略所实现的策略借口中的方法。
2.策略模式的使用:
策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一 个抽象策略类的子类。用一句话来说,就是:“准备一组算法,并将每一个算法封装起来,使得它们可以互换”。
四、策略模式的优点和缺点
策略模式的优点
(1)策略模式提供了管理相关的算法族的办法。策略类的等级结构定义了一个算法或行为族。恰当使用继承可以把公共的代码移到
父类里面,从而避免代码重复。
(2)使用策略模式可以避免使用多重条件(if-else)语句。多重条件语句不易维护,它把采取哪一种算法或采取哪一种行为的逻辑与算法或行为的逻辑混合在一起,统统列在一个多重条件语句里面,比使用继承的办法还要原始和落后。
策略模式的缺点
(1)客户端必须知道所有的策略类,并自行决定使用哪一个策略类。这就意味着客户端必须理解这些算法的区别,以便适时选择恰当的算法类。换言之,策略模式只适用于客户端知道算法或行为的情况。
(2)由于策略模式把每个具体的策略实现都单独封装成为类,如果备选的策略很多的话,那么对象的数目就会很可观。
五、适合使用策略模式的场景
应用场景:
1、 多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。(例如FlyBehavior和QuackBehavior)
2、 需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现。(例如FlyBehavior和QuackBehavior的具体实现可任意变化或扩充)
3、 对客户(Duck)隐藏具体策略(算法)的实现细节,彼此完全独立
六、策略模式在java中的应用
Java深入到一定程度,就不可避免的碰到设计模式这一概念,了解设计模式,将使自己对java中的接口或抽象类应用有更深的理解.设计模式在java的中型系统中应用广泛,遵循一定的编程模式,才能使自己的代码便于理解,易于交流,Strategy(策略)模式是比较常用的一个模式.
应用场景:在涉及到一系列的算法的时候,可以考虑采用策略模式把一个个算法封装成单独的类。
通过注入不同的算法策略类,从而使得使用者得到不同的算法结果。
在此写了7个java类来描述说明Strategy设计模式;
1、SortStrategy.java 排序算法策略接口
2、SortBin.java 二分法排序
3、SortBubble.java 冒泡排序
4、SortHeap.java 堆排序
5、SortQuick.java 快速排序
6、Sorter.java 排序算法使用者
7、SortTest.java 带有main方法的测试类
=============== 1、SortStrategy.java
import java.util.List;
public interface SortStrategy<T> {
//排序
public void sort(List<T> list);
}
=============== 1 end
=============== 2、SortBin.java
import java.util.List;
public class SortBin<T> implements SortStrategy<T> { public void sort(List<T> list) {
// sorting logic code here
System.out.println("This is bin sort.");
}
}
=============== 2 end
=============== 3、SortBubble.java
import java.util.List;
public class SortBubble<T> implements SortStrategy<T> { public void sort(List<T> list) {
// sorting logic code here
System.out.println("This is bubble sort.");
}
}
=============== 3 end
=============== 4、SortHeap.java
import java.util.List;
public class SortHeap<T> implements SortStrategy<T> { public void sort(List<T> list) {
// sorting logic code here
System.out.println("This is heap sort.");
}
}
=============== 4 end
=============== 5、SortQuick.java
import java.util.List;
public class SortQuick<T> implements SortStrategy<T> { public void sort(List<T> list) {
// sorting logic code here
System.out.println("This is quick sort.");
}
}
=============== 5 end
=============== 6、Sorter.java import java.util.List;
public class Sorter<T> {
private SortStrategy<T> strategy;
private Sorter(){}
//通过构造器传入排序策略
public Sorter(SortStrategy<T> strategy){ if(strategy == null )
strategy = new SortQuick<T>();
this.strategy = strategy; }
//排序
public void sort(List<T> list){ this.strategy.sort(list);
}
}
=============== 6 end
=============== 7、SortTest.java 测试类
import java.util.ArrayList;
import java.util.List;
public class SortTest {
public static void main(String[] args) {
List<Integer> input = new ArrayList<Integer>(); input.add(8);
input.add(3);
input.add(5);
input.add(2);
input.add(1);
input.add(12);
input.add(9);
Sorter<Integer>
SortBin<Integer>());
sorter.sort(input);
sorter = new Sorter<Integer>(new SortBubble<Integer>()); sorter.sort(input);
sorter = new Sorter<Integer>(new SortHeap<Integer>()); sorter.sort(input);
sorter = new Sorter<Integer>(new SortQuick<Integer>()); sorter = new Sorter<Integer>(new
sorter.sort(input);
}
}
=============== 7 end
七、综合应用举例
下列应用程序中,使用了java策略模式中设计的类来加密和解压文件
Import java .io.*;
Public class APPlication{
Public static void main(string args[]){
File fileOne= new file(?a?txt)
File fileTwo= new file(?b?txt)
String s =””;
Encodcontext encode =new Encodcontext ();
Encode .setStrategy(new StrategyOne(“你好hello”);
encode.encryptFile(fileOne);
System.out.println(fileOne .getName()+”加密后的内容“); Try{ File Reader inOne= new File Reader (fileone);
BufferReader inTWO= new BufferReader(inonr);
While((s=intwo.readLine())!=null){
System.out.println(s);
}
Inone.close();
Inteo.close();
}
Catch(IOException EXP{}
String str =encode.decryptFile(fileone);
System.out.println(fileOne.getName()+”解密后的内容:”); System.out.println(str);
Encode.setStrategy(new StrategyTwo(“篮球game”));
encode.encryptFile(filetwo);
System.out.println(“\n”+fiiletwo.getName()+”加密后的内容:”); Try{ FileReader inTwo=new FileReader(file Two);
BufferReader inTWO= new BufferReader(inone);
} While((s=intwo.readLine())!=null){ System.out.println(s);
Inone.close ();
Intwo.close(_);
}
Catch(IOException exp){}
Str=encode.decryptFile(fileTwo);
System.out.println(fileTwo.getName()+”解密后的内容:“); System.out.println(str);
}
}
运行结果:
a.txt加密后的内容:Ё耱齄箨麝鏊??瘙?蟒蜿Ё
a.txt解密后的内容:今天的天气真好啊
b.Txt加密后的内容:腆黯??蝓?Ё耱齄箨麝鏊
b.Txt解密后的内容:我们大家都喜欢旅游
后记
学习设计模式不仅学习他得架构,他的方法,更重要的是学习他的思想,从工程的角度去解决问题。代理模式就是这样的一个充满工程思想的模式。学习他,并且使用他,在实际的项目中使用他,才能真正提升自身的水平。
城市设计课程论文
郑东新区CBD公共空间设计
院 系: 姓 名: 王 敏
学 号: 101207125
指导老师: 汤振兴
城市设计课程论文
郑东新区CBD城市公共空间设计
【摘要】:本文从城市公共空间的构成要素入手,着重分析郑东新区CBD城市公共空间设计的优缺点,结合公共空间的物质属性和社会属性阐述人们对城市与生活的认知、体验。以城市设计层面的城市公共空间设计为落脚点,分析城市设计与城市宜居性、可识别性、地域特色等的内在联系。
【关键词】:郑东新区 CBD 公共空间 城市设计
【正 文】:
CBD即Central Business District(中央商务区),它是城市发展到一定阶段,从城市中心区分离出来,明显区别于传统城市商业购物中心的特定城市地区,成为一个城市、一个区域乃至一个国家经济发展中枢。在城市发展过程中,CBD的出现无疑为城市增添了一抹亮色,与此同时,如何最大限度的避免影响城市发展的不利因素,更加合理地组织CBD空间各要素,使其更好地为城市发展服务,成为当今各大城市需要关注的问题。以郑东新区CBD为例,从城市设计层面的城市公共空间设计的角度出发,构成其公共空间的各要素以及彼此交织所构成的空间网络既有值得肯定之处,也有需要改进的地方。
郑东新区CBD是郑东新区的核心区和起步区,是一个集商务、办公、住宅、观光、休闲和研究等多种功能为一体的城市环形建筑群,由两组高层建筑组成,其中内环建筑
高80米,
外环建筑
高120米,
高低错落
间勾勒出
建筑流动
的曲线,
营造了丰富多彩的城市公共空间。两环之间是繁华、舒适的商业步行街,整体形成一个内低外高、多姿多彩的环形多维城市。
城市公共空间由建筑物、道路、广场、绿地与地面环境设施等要素构成。城市公共空间规划设计的目的是合理组织上述各个公共空间组成元素,创造功能良好、富有特色
城市设计课程论文 的城市环境。城市公共空间的重点是城市中心、广场、街道、绿地、城市滨水区等。虽然城市设计“只设计城市,不设计建筑”,但现代城市中建筑所涉及的空间领域也越来
越向城市靠拢,
彼此交织,关系
越来越密切。城
市设计在一定程
度上决定了建筑
形态的组合、城
市外部空间的优
劣。尤其是就视
觉这一基本感知途径而言,建筑群体的组合方式与城市公共空间关系密切。所以,建筑也应该作为城市公共空间设计所关注的内容。下面,论文将从广场、绿地、城市滨水区以及建筑等几个方面展开论述,重点阐述郑东新区CBD城市公共空间设计。
1.广场
郑东新区CBD时尚文化广场位于如意湖的西北部,占地面积约一万平方米,是郑州会展中心功能的延展与补充,可以作为会展活动的室外展场,是典型的城市公共空间。时尚文化广场是东区的“客厅”,也是整个CBD中央公园不可或缺的组成部分,更是郑东新区CBD城市公共空间的有机组成部分。
广场西部建有长久性的演出舞台,经常组织有连续性、公益性的专题广场文化活动。舞台作为广场上的演出设施,同时也是城市公共空间设施的一种,为城市公共空间活动提供了物质载体,有了物质载体居民的精神文娱乐活动才有依托。这充分体现了城市公共空间的物质属性和社会属性。
企业形象展示、时装模特表演、消夏文艺晚会和自娱自乐式的市民文化活动在这里不间断上演,大大丰富了市民的文化生活,在一定程度上也提高了市民参与城市公共空间活动的热情与积极性。反过来也使城市公共空间设施建设不断完善,使其更有亲和力。如意湖综合水景表演、湖畔露天酒吧连同文化广场,构成了CBD内一道独特的风景。
广场是由于城市功能上的要求而设置的,是供人们活动的城市公共空间。城
城市设计课程论文 市广场通常是城市居民社会活动的中心,其设计水平的优劣直接影响到市民参与城市公共空间活动的积极性,因此,如何合理组织广场空间各要素使其综合功能发挥到最大水平是每个城市设计规划者需要慎重考虑的。
2.绿地
作为城市设计典型空间类型的绿地空间,是指以全体社会公众为服务对象,便于市民到达并进入,以自然植被和人工植被作为主要存在形态,可满足市民观赏,休闲需要的城市空间。
郑东新区CBD规划为环状,其中绿地景观与城市呼应,意在形成系统而优美的城市景观环境。CBD绿地主要由道路绿地和公园绿地两部分组成。道路景观强调简洁明快,
而公园景观则由城市
公园、交通公园、滨
河公园、中央公园等
部分组成。其中,城
市公园作为CBD地区
的导入空间,是连接
老城区和新区的缓冲
地带,可作为城市的
“绿楔”。“绿楔”是
一种真正的城市开发
中的“呼吸空间”。它
提供自然景观要素与人造环境之间的一种均衡,也是对高密度开发设计的一种变化和对比。绿楔是城市的呼吸空间,也是城市公共空间设计的精华之笔。城市中有“绿楔”的存在给城市公共空间增添了活力与生机。
交通公园作为都市节点为进入CBD地区的人们提供开阔的瞭望空间;而中央公园作为都市绿洲,将周边的会展中心、艺术中心、商务中心有机地联为一体。
滨河公园作为CBD地区边缘的河滨绿地、具有延伸视线的功能,有效地将CBD从周边地域中凸现出来。
城市设计课程论文 然而,作为城市绿地不仅要满足人们视觉审美上的要求,还要满足人们多种活动的需求。因此,花坛、座凳、灯具、垃圾桶、指示牌等附属设施与生活设施也是绿地空间使用过程中不可缺少的重要内容,设计时需要结合心理学、行为学、人体工程学的相关原理,为人们休憩、娱乐等活动提供行为支持,同时力争体现出趣味性与观赏性的美学特征。郑东新区CBD如意湖周边的滨水绿地设计的较为合理,入口处的绿地中间设置了曲形道路,曲路上有沿着曲线行进的不锈钢半球雕塑, 极富工业化色彩的小品映出周围的林木,人行走在曲路上,可以看到半球雕塑不断地映射着周围不同的景色。在如意湖滨水区周边还布置了供人们休憩所用的座椅,坐在座椅上整个如意湖的景观尽收眼底。如意湖周边的设施大大提高CBD的亲水性和其公共空间的开放性,从而吸引着人们前来观光、休闲、游览??
在郑东新区CBD,除了如意湖周边绿地以外的其他绿地在附属设施的设置方面做得还有些欠缺,在绿地周围缺乏座椅、花坛等设施,造成公共空间宜人性的缺失。在这方面CBD还需要加大绿地附属设施的设置力度,以便创造出更有人性化且极富魅力的郑东新区CBD新形象!
3.城市滨水区
滨水区是城市中一个特定的公共空间地段,主要包括与河流、湖泊、海洋相邻的土地和建筑区域,即城市附近水体的部分。城市滨水区设计的主要对象是其公共空间环境,
即城市中近水体的
公共空间物质所限
定的公共开放空间
环境。它由对公众开
放的自然环境和人
工环境两大部分组
成,包括河流、沿岸
步行空间、街道、广
场、公共绿地,建筑
物间的外部公共空
间环境,以及对公众
城市设计课程论文 开放的建筑物公共大厅、中庭、室内街道、室内广场和建筑的灰空间环境等。可以说是城市的滨水区让城市有流动的气息和生命的氛围。
“城”与“水”的关系。郑州市与水具有深远的历史渊源。郑州北部就是孕育中华文明的的黄河。郑州新区CBD的总体布局和城市形态的发展无不受制于水体这一自然要素,而水体又为城市的生态环境改善和调节起着十分重要的作用。郑东新区CBD虽然水体资源比较匮乏,但是依旧注入了水的活力。CBD中心区是人造湖—如意湖,在该滨水公共空间改造中,以实现城水交融为主,建造滨水公共活动空间,提高新区亲水性。规划确立沿河开辟的公共活动空间,形成沿河绿化开敞空间,使滨水绿化空间形成城市生活与水体这一自然要素的协调区,既保证了新区CBD有丰实的景观空间,又使水体得以充分的保护。
“建筑”与“水”的关系。建筑是城市的重要人文元素。城市滨空间改造离不开建
筑,处理好建筑与
水体的关系是规
划中必须重点考
虑的两大因素。新
区CBD滨水空间的
改造旨在打开城
市公共活动空间,
而建筑却具有封
闭性、隔断性的特
点。以建筑物封闭
性的特点而言,规
划限制建筑物在
沿河绿地中布置,
以建筑物隔断性
而言,规划采用限
制滨河地块中的
建筑密度和高度,以确保城市滨水空间的开敞性。新区CBD规划将滨水公共空间进行了等级划分,明确规定了建筑的高度、体量和建筑功能等等。
“树”与“水”的关系。这里所指的“树”是指沿河栽种的创造绿色的景观树和绿化草坪。新区种植的各种各样的树木与水体构成了一幅幅生动的城市水乡风貌,树木所复盖的投影空间,也是城市居民休闲、交往的理想场所。新区CBD在设计中,注重树木与水体的有机结合,形成滨水公共空间的一大特色。
4.建筑
城市设计不直接设计建筑,但作为城市公共空间的构成要素,建筑的外部形态、轮
城市设计课程论文 廓以及作为室外公共空间延续的建筑大厅都与城市公共空间设计关系密切。CBD内环建筑高80米,外环建筑高120米,置身于CBD内环之中可以欣赏到沿环形道路依此分布的建筑所构成的流动曲线,犹如流动的音符。
但是,CBD内环与外环的有些建筑在外形和色彩上极为相似,各个建筑的可识别性较差,人们很难根据建筑的外部形态判断自己所处的位置。这也是造成人们在CBD容易迷失方向的原因之一。CBD内的建筑应在设计形态与色彩方面有自己的特色,在变化中求统一,在统一中促变化,增加建筑的可识别性,只有如此才能设计出富有地方特色的城市公共空间。
城市中的建筑,可以称得上是城市的灵魂,一个城市没有建筑的存在,就不可能算作是城市,因此对建筑设计的要求就显得比较高。而对于活动于城市公共空间的人们来说,建筑设计尤其是建筑形态、建筑色彩、建筑结构以及由建筑外部轮廓组合而成的城
市天际线也显得
尤为重要。上述各
个建筑要素对于
城市公共空间的
塑造和室外环境
氛围的营造,有着
不可分割的的内
在联系。行走于城
市之中,人们极易
被建筑以及由建
筑和其周围的环境所构成的城市公共空间所吸引,而城市的天际线本身就是一张很好的宣传城市的名片。因此加强城市公共空间环境氛围的营造有必要从建筑形态、建筑色彩和城市天际线等方面着手,只有将分布于城市中各有关要素合理组织并精心设计才能创造出宜人的、舒适的城市公共空间。如果郑东新区CBD在上述各方面加以改造,相信CBD的明天会更好!
【总结】:
城市公共空间一般是在城市经济与社会发展的过程中,
由于居民的需要逐步建设形
城市设计课程论文 成,并随着社会的进步,经济的发展,人们生活水平的提高而不断完善。同时,居民对城市公共空间的需求也更加多样化,为公众使用的公共空间越来越多地蕴含着公共性的问题,人们对于公共领域、公共主体等都给予了极大的关注。在设计城市公共空间时,不仅需要参考优秀城市公共空间设计案例,还要了解城市自身的发展基础、自然状况、社会、经济、政治因素等,重点分析原有公共空间设计的优缺点,以及生活在城市中的人们对城市公共空间的需求和期望。这就需要在城市设计过程中相关领导和规划设计者能够多多调查民意,只有深入了解居民的意愿才能体现出城市公共空间设计的公平与公正,也才能设计出真正符合大众心理需求且满足人们日常生活需要的人性化城市!
【参考文献】:
1.周波;城市公共空间的历史演变[D];四川大学;20xx年
2.张华;郑东新区CBD(中央商务区)景观空间形态研究[D];中南林业科技大学;20xx年
3.董奇昱;郑州市郑东新区发展研究[D];同济大学;20xx年
4.黄建军;CBD开放空间人性化设计[D];西南大学;20xx年
5.郑曦,李雄;城市开放空间的解析与建构[J];北京林业大学学报(社会科学版);20xx年02期
工程结构设计心得课程设计对学生而言是其对所学课程内容掌握情况的一次自我验证,从而有着极其重要的意义。通过课程设计能提高学生对所学知…
心得体会通过这次课程设计,让我更加深刻了解课本知识,和以往对知识的疏忽得以补充,在设计过程中遇到一些模糊的公式和专业用语,比如说经…
个人小结三周的课程设计结束了,我和同学们一起度过了这段忙碌而充实的时光。这次的课程设计深刻的反映出实践是检验真理的唯一标准这句话的…
通过近两周的奋斗,课程设计接近了尾声。经过两周的奋战我的课程设计终于完成了。在没有做课程设计以前觉得课程设计只是对信号与系统这门课…
课程设计心得体会通用通过此次课程设计使我更加扎实的掌握了有关方面的知识在设计过程中虽然遇到了一些问题但经过一次又一次的思考一遍又一…
关于标志设计的课程的感受,应该是我在这学期所有专业课程中感受最深的一门课了。首先是以为这门课更贴切于“设计”这个概念了,让我终于感…
本学期本人担任学校11级计算机专业的网页设计的教学工作。下面就这一学期的教学工作进行总结:一、期初制定计划及落实情况在学期初,按照…
我们所选择的图书管理系统的课程设计对我们是新的挑战和尝试的过程,利用所学习的软件设计知识并制作一个关于图书管理系统,在具体的设计与…
《机械设计基础》课程重点总结绪论零件是制造的单元,构件是运动的单元,一部机器可包含一个或若干个机构,同一个机构可以组成不同的机器。…
空间设计是环境艺术设计专业的专业基础课程,是培养学生三维造型基本功和艺术表达能力,训练学生创造性思维能力的必修课程。它的目的在于培…