设计模式-装饰模式总结及实例

设计模式-装饰模式总结及实例
设计模式-装饰模式总结及实例

设计模式作业

————装饰模式

姓名:刘建勋

专业班级:信计0802

学号:0808060217

装饰者模式

总结:

一、基本概念

官方定义:动态地给一个对象增加其他职责。就扩展对象功能来说,装饰者模式比生成子类更为灵活。

装饰这模式利用组合在运行时动态的合成自己想要的对象,这比继承更具弹性。

二、设计原则

1. 多用组合,少用继承。

利用继承设计子类的行为,是在编译时静态决定的,而且所有的子类都会继承到相同的行为,然而,如果能够利用组合的做法扩展对象的行为,就可以在运行时动态地进行扩展。

2. 类应设计的对扩展开放,对修改关闭。

三、要点

1.装饰者和被装饰对象有相同的超类型。

2.可以用一个或多个装饰者包装一个对象。

3.装饰者可以在所委托被装饰者的行为之前或之后,加上自己的行为,以达到特定的目的。

4.对象可以在任何时候被装饰,所以可以在运行时动态的,不限量的用你喜欢的装饰者来装饰对象。

5.装饰模式中使用继承的关键是想达到装饰者和被装饰对象的类型匹配,而不是获得其行为。

6.装饰者一般对组件的客户是透明的,除非客户程序依赖于组件的具体类型。在实际项目中可以根据需要为装饰者添加新的行为,做到“半透明”装饰者。

7.适配器模式的用意是改变对象的接口而不一定改变对象的性能,而装饰模式的用意是保持接口并增加对象的职责。

四、模式的实现

模式中存在四种角色,如下:

(1)抽象构件角色:定义一个抽象接口,来规范准备附加功能的类。

(2)具体构件角色(即被装饰者):将要被附加功能的类,实现抽象构件角色接口。

(3)抽象装饰者角色:持有对具体构件角色的引用并定义与抽象构件角色一致的接口。

(4)具体装饰角色:实现抽象装饰者角色,负责为具体构件添加额外功能。

其中,被装饰者与抽象装饰者都继承与抽象构件角色,具体装饰角色继承与抽象装饰角色,之所以让装饰者和被装饰者继承于同一组件是想让装饰者和被装饰者具有统一的类型而非为了继承行为。

装饰者模式的基本思想是用装饰者来包装组件使之成为一个同类型的新组件,所以在装饰者角色中,记录当前对象(一般是声明一个基类引用变量,构造器中传对象引用参数初始化此变量),利用多态技术,用基类对象引用最终被包裹后的对象(注意:每包裹一层就把之前的对象覆盖掉),就获得了组件和所有包裹过组件的行为。

五、适合此模式的情况

1. 需要扩展一个类的功能,或给一个类添加附加职责。

2. 需要动态的给一个对象添加功能,这些功能可以再动态的撤销。

3. 需要增加由一些基本功能的排列组合而产生的非常大量的功能,从而使继承关系变的不现实。

4. 当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类。

六、优缺点

优点:

1. Decorator模式与继承关系的目的都是要扩展对象的功能,但是Decorator可以提供比继承更多的灵活性。

2. 通过使用不同的具体装饰类以及这些装饰类的排列组合,设计师可以创造出很多不同行为的组合。

缺点:

1. 这种比继承更加灵活机动的特性,也同时意味着更加多的复杂性。

2. 装饰模式会导致设计中出现许多小类,如果过度使用,会使程序变得很复杂。

3. 装饰模式是针对抽象组件(Component)类型编程。但是,如果你要针对具体组件编程时,就应该重新思考你的应用架构,以及装饰者是否合适。当然也可以改变Component 接口,增加新的公开的行为,实现“半透明”的装饰者模式。在实际项目中要做出最佳选择。

实例:

制作一个可以给人搭配不同的服饰的系统,比如类似QQ,网络游戏或论坛都有的A vatar系统.实现方式(UML类图)

实现代码

#include

class Person

{

public:

Person() : name(0){}

Person(char* _name) : name(_name){}

virtual void Show()

{

printf("装扮的%s",name);

}

protected:

char* name;

};

class Finery : public Person

{

public:

Finery() : component(0){}

void Decorate(Person* component)

{

this->component = component;

}

virtual void Show()

{

if(component) component->Show();

}

protected:

Person* component;

};

class TShirts : public Finery

{

public:

virtual void Show()

{

printf("大T恤");

__super::Show();

}

};

class BigTrouser : public Finery

{

public:

virtual void Show()

{

printf("跨裤");

__super::Show();

}

};

class Sneakers : public Finery {

public:

virtual void Show()

{

printf("破球鞋");

__super::Show();

}

};

class Suit : public Finery

{

public:

virtual void Show()

{

printf("西装");

__super::Show();

}

};

class Tie : public Finery

{

public:

virtual void Show()

{

printf("领带");

__super::Show();

}

};

class LeatherShoes : public Finery {

public:

virtual void Show()

{

printf("皮鞋");

__super::Show();

}

};

int main()

{

Person* xc = new Person("小菜");

printf("第一种装扮:\n");

Sneakers* pqx = new Sneakers();

BigTrouser* kk = new BigTrouser();

TShirts* dtx = new TShirts();

pqx->Decorate(xc);

kk->Decorate(pqx);

dtx->Decorate(kk);

dtx->Show();

printf("\n第二种装扮:\n");

LeatherShoes* px = new LeatherShoes();

Tie* ld = new Tie();

Suit* xz = new Suit();

px->Decorate(xc);

ld->Decorate(px);

xz->Decorate(ld);

xz->Show();

delete xc;

delete pqx;

delete kk;

delete dtx;

delete px;

delete ld;

delete xz;

return 0;

}

运行结果

装饰设计部个人工作总结

装饰设计部个人工作总结 大家下午好!今天十分有幸和各位同聚一堂,我是前天接到公司的通知,从五星电器镇江大港卖场的装饰工程现场赶回南京的。下面就本人本年度的工作,从两个方面做一简要的述职,请各位予以评议。 一、本年度的工作和成绩 针对我们近年长期合作的战略伙伴五星电器,比较以往的合 作伙伴苏果超市以及苏宁电器,从各家的企业文化及其装饰工程的发包价格,结合现今形势下的工人队伍,各个施工单位的经营手段,以及材料市场的不断变化。在裘总的正确引导下,我们从全方位进行了分析、对比,最终得出的结论是:五星电器的企业文化较为合适,卖场装修的工期相对充裕,工程回款也较为及时。因此,我们要充分利用国有品牌的良好信誉,依靠我们赖以生存的设计力量,把握好施工现场的每一个环节,用我们的真诚服务去感动他们,用装饰中的真材实料让建设方信服。

由于我们提高了认识,统一了思想,即使在实际工作中遇到各种各样的困难,也能知难而上,义无反顾地投入其中。新年伊始,赶在春节前夕,我们前往镇江中山桥卖场,进行了空调外机铝合金防雨百叶的装修工程。尽管工程利润微乎其微,但为了维系关系,我们不惜代价全力完成。 春暖花开的时节,三月底我们同时接到五星电器工程部的通知,一举完成了扬州文昌路卖场、南京水西门卖场以及宁波慈溪卖场的装修改造工程,为全年经济指标的顺利完成打下了坚实的基础。 首先进行的是南京水西门卖场的改造工程。考虑到三地同时开工,公司调兵遣将,在人员搭配上全力支持,委派撒世华同志协助李甪同志完成此项任务。李甪同志虽是第一次单独承担五星卖场的工程装修,但她凭着强烈的工作责任心和女同志特有的细心,在裘总的指挥下,紧密和甲方配合,现场组织和选购材料两不误,较为圆满地完成了为期10天的施工任务,保证了卖场的顺利开业。

软件设计师23种设计模式总结

创建型结构型行为型 类Factory Method Adapter In terpreter Template Method 对象 Abstract Factory Builder Prototype Si ngleto n Apapter(对象) Bridge Composite Decorator Fa?ade Flyweight Proxy Chain of Resp on sibility Comma nd Iterator Mediator Meme nto Observer State Strategy Visitor (抽象工厂) 提供一个创建一系列相关或互相依赖对象的接口,而无须制定它们具体的类。 图10-25抽象工厂模式结构图 Abstract Factory 抽象工厂 class Program { static void Main(string[] args) { AbstractFactory factory1 = new Con creteFactory1(); Clie nt c1 = new Clie nt(factory1); c1.Ru n(); AbstractFactory factory2 = new Con creteFactory2(); Clie nt c2 = new Clie nt(factory2); c2.Ru n(); Co nsole.Read(); abstract class AbstractFactory { public abstract AbstractProductA CreateProductA(); public abstract AbstractProductB

程序员个人工作计划

2015程序员个人工作学习计划 程序员个人工作学习计划 新的一年,一切事物充满了活力与生机。新生活意味着新开始,新开始意味着新的挑战。作为即将毕业跨入社会的大学生,我将在这学校生活和社会生活相交织的一年,努力适应变化,迎接新的挑战。 一、工作方面 作为公司的新员工,首先要与同事们相互熟悉,不说认识所有人,至少要认识大部分同事,与大家和睦相处,互相帮助。 分配的工作任务要积极及时的完成,作为新员工,分配到的任务肯定是非重点,繁琐的基础性的事,但是即使是这样,也不能松懈,敷衍了事,基础中才能学到真本事,对待这样的任务更要认真仔细。做好了这样的事,才有可能获得信任和肯定,被任命重要的任务,才能成长起来。 二、学习方面 最为初出校园的新人,必然有很多在实际开发中常用而我却从没有接触过的东西,学校教授的只是基础,进了公司,仍然不能停下学习的步伐。 首先最重要的一点就是在学习过程中有了问题就得及时解决。我的步骤一般是先自己思考问题的答案,自己无法解决则到网络上寻求答案,网上也无法找到可靠的答案则询问周围的同事帮忙解决。认真听他们的讲解,牢牢记住分析问题的思路和方法,以便下次遇到时能尽量自己就能解决问题。 14年需要学习的东西有很多,作为从事web应用开发的的程序员,首先mvc规范必然是要熟练掌握的,这是学校中只是简单提到的东西。首先通过李刚的《轻量级javaee企业应用实战》,对ssh这样的一个mvc思想的架构有一个初步宽泛的了解,()然后在分别对struts,spring,hibernate进行深入了解。根据网上资料,国内较好的struts方面的书是孙卫琴的《精通struts:基于mvc的javaweb设计与开发》,在大体学习了ssh后,就从这本书开始细致的学习这方面的知识,然后是林信良的《spring技术手册》和《prospring中文版》,最后是夏昕的《深入浅出hibernate》。 其次,设计模式的学习也是成为一个好的程序员,甚至是编程艺术家的必经之路。首先看完程杰的《大话设计模式》,对设计模式有一个初步的认识,然后再看gof的《设计模式:可复用面向对象软件的基础》, ericfreeman&elisabethfreemanwithkathysierra&bertbates的《headfirstdesignpatterns》,joshuakerievsky的《重构与模式》等等书籍。要成为一个好的java程序员,还有很长的路要走,只是看些肯定是不够的,最重要的还是实践经验,希望2015年能让向前迈出一大步。篇二:程序员的2015年9个计划 程序员的2015年9个计划 制定新年计划是我们最喜欢做的事情之一,我们总是会在年底的时候对新的一年有一个很好的计划,但后来就把它们都抛到脑后了,直到最后全部忘记。也许,我们的计划总是过于宏伟,很多事情都是做不到的,甚至显得遥不可及。但是,今年一定会有所不同,这篇文章就是专为程序员准备的九大新年计划,供各位程序员参考。 1. 学习一门新的不同风格的编程语言 这是很需要的一件事,因为如果你只了解一种语言,它就会局限你解决问题的能力和你的职业发展。所以在新的一年,你应该花些时间学习一门新的语言,体验不同的编程风格,并学以致用。 2. 提高你的已有技能 3. 活动你的手指,但不是在键盘上

毕业设计过程总结

毕业设计过程总结 对于毕业设计的过程应该如何进行总结呢?以下是小编收集的相关总结,仅供大家阅读参考! 随着毕业日子的到来,毕业设计也接近了尾声。经过几周的奋战我的毕业设计终于完成了。在没有做毕业设计以前觉得毕业设计只是对这几年来所学知识的单纯总结,但是通过这次做毕业设计发现自己的看法有点太片面。毕业设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。 在这次毕业设计中因为是三个人一组也使我们的同学关系更进一步了,同学之间互相帮助,有什么不懂的大家在一起商量,听听不同的看法对我们更好的理解知识,所以在这里非常感谢帮助我的同学。在此要感谢我的指导老师黄娟对我悉心的指导,感谢老师给我的帮助。在设计过程中,我通过查阅大量有关资料,与同学交流经验和自学,并向老师请教等方式,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。虽然这个设计做的也不太好,但是在设计过程中所学到的东西是这次毕业设计的最大收获和财富,使

我终身受益。大学三年就会在这最后的毕业设计总结划上一个圆满的句号。我曾经以为时间是一个不快不慢的东西,但现在我感到时间过的是多么的飞快,三年了,感觉就在一眨眼之间结束了我的大学生涯.毕业,最重要的一个过程,最能把理论知识运用到实践当中的过程就数毕业设计了.这也是我们从一个学生走向社会的一个转折.另一个生命历程的开始.毕业设计的这一个月,我学到了很多,也成熟了很多.我现在将我的过程以及所学到的总结如下: 根据经济业务填制原始凭证和记账凭证。原始凭证是指直接记录经济业务、明确经济责任具有法律效力并作为记账原始依据的证明文件其主要作用是证明经济业务的发生和完成的情况。填写原始凭证的内容为原始凭证的名称、填制凭证的日期、编号、经济业务的基本内容对经济业务的基本内容应从定性和定量两个方面给予说明如购买商品的名称、数量、单价和金额等填制单位及有关人员的签章。记帐凭证记帐凭证是登记帐薄的直接依据在实行计算机处理帐务后电子帐薄的准确和完整性完全依赖于记帐凭证操作中根据无误的原始凭证填制记帐凭证。填制记帐凭证的内容凭证类别、凭证编号、制单日期、科目内容等。根据记账凭证及所附的原始凭证登记明细帐。明细分类帐薄亦称明细帐它是根据明细分类帐户开设帐页进行明细分类登记的一种帐薄输入记帐凭证后操作计算机则自动登记明细帐。根据记账凭证

优秀总结范文:装修年终工作总结

装修年终工作总结 2013年,转瞬即逝,一年来在公司领导的强有力的领导下和相关同事的协作下的共同努力,在装潢部全体人员的不懈努力下,我装潢部基本完成了预定工作计划,德泰堂国际商务大厦·彩世界广场内外装饰装修工程得以顺利进行。并保证了德泰堂国际商务大厦的如期交房和彩世界广场的如期开业。装潢部所有人员在山东德泰堂置业有限公司装潢部工作过程中,严格遵守法律法规,遵守公司的各项规章制度,平时严格要求自己,廉洁自律。工作中敢于承担责任,有认真负责的精神,有一定的组织协调能力,能理论联系实际的开展工作,与同事协作共事,一心为公司,较好地完成了德泰堂国际商务大厦·彩世界广场内外装饰装修工程的管理工作。现将有关德泰堂国际商务大厦·彩世界广场内外装饰装修工程项目管理工作进行简要汇报: 2013年装潢部共设置正式管理人员3人,全面负责德泰堂国际商务大厦·彩世界广场的室外装饰工程、德泰堂国际商务大厦大堂室内精装修工程、德泰堂国际商务大厦5-22层公共区域室内精装修工程、最全面的范文参考写作网站彩世界广场公共区域精装修工程、德泰堂国际商务大厦·彩世界广场室内外不锈钢栏杆装修工程、德泰堂国际商务大厦·彩世界广场自动门及旋转门安装工程、地下一层所有电梯厅精装修工程以及所有商场二装单位的审图及施工管理工作;并配合成本部参与所有甲供及甲控材料的市场调研、询价以及合同的签订;孙良忠作为技术总监负责全

盘管理、负责与监理单位、总包单位、各分包施工单位、设计单位及其它相关专业进行沟通协调;孟兵作为装潢部经理主要负责施工技术和质量工作,协助资料员完成工程技术资料,并兼职库管主要负责进场材料、物资的收发工作;陈金科作为项目安全员和资料员主要负责现场及施工过程中的安全巡查工作,并协助孟兵进行施工质量检查,施工工程中的所有资料的整编工作;临时用电系统的正常运转和施工工程中的用电安全工作。装潢部管理人员各司其职,互相配合,在现场克服了种种困难,指挥各分包队伍较为顺利的完成了全年工作任务。 一、项目施工过程控制管理情况 在公司的领导下负责项目的成本控制、工程进度、质量管理的项目管理工作。负责对本工程的工期、质量、安全、成本等实施计划,组织、协调、控制和决策,对各生产施工要素实施全过程的动态管理。工程施工过程中,严格按设计要求、验收规范、规定,监督检查工程质量、成本、进度、安全等工作。 (一)、项目组织管理情况: 根据德泰堂国际商务大厦·彩世界广场内外装饰装修工程的特点,首先明确项目组织管理体系、项目工程部主要工作职责,确定项目管理的目的任务,制定工程四大总体目标(质量、进度、投资、现场)施工过程控制重点;制定项目管理工作程序。在公司领导的强有力的领导下和相关同事的协作下,使得德泰堂国际商务大厦·彩世界广场内外装饰装修工程得以顺利进行,通过每

设计模式优缺点及应用场景整理

看完发现有不太对的地方告诉我下 各设计模式优缺点总结 1桥接模式 优点:1 将实现予以解耦,让它和界面之间不再永久绑定 2 抽象和实现可以独立扩展,不会影响到对方 3 对于“具体的抽象类”所做的改变,不会影响到客户。 缺点:1. 增加了复杂度 用途:1. 适合使用在需要跨越多个平台的图形和窗口上 2. 当需要用不同的方式改变接口和实现时,你会发现桥接模式很好用。 具体实例:跨平台的软件,不同电视机和不同的遥控器。 2生成器模式(建造者模式) 优点: 1.将一个复杂对象的创建过程封装起来 2.允许对象通过多个步骤来创建,并且可以改变创建过程 3.向客户隐藏内部的表现 4.产品的实现可以被替换,因为客户只看到一个抽象的接口 缺点: 1.与工厂模式相比,采用生成器模式创建对象更复杂,其客户,需要更多的知识领域。用处: 用来创建组合结构。 典型例子: 想不起典型例子 还是扯那个画小人,构建小人分画头,画身体,画双手,黄双脚等不同构建部分,全部放在一起构建。 3职责链模式 优点: 1.将请求的发送者和接收者解耦 2.可以简化你的对象,因为它不需要知道链的结构 3.通过改变链内的成员或调动他们的次序,允许你动态地新增或删除责任 缺点: 1.并不保证请求一定会被执行,如果没有任何对象处理它的话,它可能会落到链尾端 之外 2.可能不容观察运行时的特征,有碍于除错。 用途:

经常被使用在窗口系统中,处理鼠标和键盘之类的事件。 当算法牵涉到一种链型运算,而且不希望处理过程中有过多的循环和条件选择语句,并且希望比较容易的扩充文法,可以采用职责链模式。 1)有多个对象处理请求,到底怎么处理在运行时确定。 2)希望在不明确指定接收者的情况下,向多个对象中的一个提交请求。 3)可处理一个请求的对象集合应该被动态指定。 典型例子: 一个请求发送给前台,前台表示我无权管理,将请求传递给财务部门,财务部门再……4蝇量模式(享元) 优点: 1.减少运行时对象实例的个数,节省内存 2.将许多“虚拟”对象的状态集中管理 缺点: 一旦你实现了它,单个的逻辑实现将无法拥有独立而不同的行为 用途: 当一个类有许多的实例,而这些实例能被同一方法控制的时候,我们就可以使用蝇量模式。(这话什么意思啊,HF书上原话,是这话有问题还是我理解能力有问题?!) 具体场景: 五子棋中的黑白子,改变坐标状态(x,y),但用同一个实体。 5解释器模式(这个模式我真没仔细看) 优点: 1.将每一个语法规则表示成一个类,方便事先语言。 2.因为语法由许多类表示,所以你可以轻易地改变或扩展此语言 3.通过在类结构中加入新的方法,可以在解释的同时增加新的行为,例如打印格式的梅花或者进行复制的程序验证。 缺点: 当语法规则数目太大时,这个模式可能会变得非常繁琐。 用途: 1.当你需要实现一个简答的语言时,使用解释器 2.当你有一个简单的语法,切简单比效率更重要时,使用解释器 3.可以处理脚本语言和编程语言 典型例子:正则表达式 6中介者模式 优点: 1.通过将对象彼此解耦,可以增加对象的复用性。 2.通过将控制逻辑集中,可以简化系统维护

Java设计模式学习心得

Java设计模式之心得 UML 1.案例图:系统角色和使用案例和它们之间的关系 2.类图: 类图中的关系 1.一般化关系:继承,接口 2.关联关系:类与类之间的联系Driver中的Car 3.聚合关系:整体与个体之间的关系 4.合成关系:强关联,整体包含部分,整体代表部分的生命周期,不能共享 5.依赖关系:类与类之间的连接,如Person包含Car和House 3.时序图: 每个步骤的流程图 4.状态图:一系列对象的内部状态及状态变化和转移 5.合作图:相互关系图 6.构建图:部署的软件构件之间的关系 7.活动图: 8.部署图: 面向对象的设计原则: 1.设计目标:可扩展性、可维护性、可插入性、可复用性 2.设计原则:开闭原则、里氏替换原则、依赖倒转原则、接口隔离原则、组合\聚合复用原则、迪米特法则 开闭原则:

OCP作为OO的高层原则,主张使用“抽象(Abstraction)”和“多态(Polymorphism)”将设计中的静态结构改为动态结构,维持设计的封闭性。 一句话:“Closed for Modification;Open for Extension”——“对变更关闭;对扩展开放”。开闭原则其实没什么好讲的,我将其归结为一个高层次的设计总则。OCP的动机很简单:软件是变化的。不论是优质的设计还是低劣的设计都无法回避这一问题。OCP说明了软件设计应该尽可能地使架构稳定而又容易满足不同的需求。 重要的步骤: 1.抽象化 2.对可变性的封装原则 里氏替换原则: 1.分析对象时必须明确是Is-a还是Has-a的关系,任何基类适应的地方,子类一定适用依赖倒转原则: 要依赖于抽象,不要依赖于具体。简单的说,依赖倒置原则要求客户端依赖于抽象耦合。原则表述:抽象不应当依赖于细节;细节应当依赖于抽象;要针对接口编程,不针对实现编程。 接口隔离原则: 使用多个专门的接口比使用单一的总接口要好。广义的接口:一个接口相当于剧本中的一种角色,而此角色在一个舞台上由哪一个演员来演则相当于接口的实现。因此一个接口应当简单的代表一个角色,而不是一个角色。,如果系统设计多个角色的话,则应当每一个角色都由一个特定的接口代表。狭义的接口(Interface):接口隔离原则讲的就是同一个角色提供宽、窄不同的接口,以对付不同的客户端。 组合\聚合复用原则: 要尽量使用组合/聚合,而不是使用继承来达到目的 原因: 继承复用的缺点:静态复用 什么使用使用继承:a.满足is-a的关系,而不是has-a的关系 b.满足lsp原则 优点:a.简洁 b.父类修改某个方法,子类能获得 迪米特法则: 一个对象或模块应该和其它对象和模块尽量少的通信(高内聚),涉及的模式有:门面模式,调停者模式,前端控制器模式,业务代表模式,dao模式

设计模式心得体会

设计模式心得体会 7月初的一个周末,准确的说应该是7月1号周六,在网上看到一本《大话设计模式》的书,而且看到很多很好的评论,于是乎,下载了电子书看看,一下子看了几章之后,对设计模式有了个了解,于是继续上网搜些其他资料,进一步了解设计模式。。。最终结论:设计模式是个好东西,具体怎么好,一两句话是无法概括的,也是从那天起,我就决定学习设计模式,于是就看《大话设计模式》,至七月十多号,大概看了一百多页后,感觉有点难,有点看不下去的感觉,于是上网找其他的好方法,无意间发现了李建忠老师的《c#设计模式纵横谈》系列讲座,微软的web cast课程,主要讲解gof的23个设计模式,每个一讲,加上一头一尾,共25讲,试听了一节课后,感觉很有用,于是就抽时间去边听课边看书,并在我的博客里写下笔记,依赖加深印象,二来可以督促我的进度。。。 三个月以来,总算把设计模式学完一遍了,原计划是两个月学完(一星期三个模式),由于。。。计划两个月学完实际花了三个月,感触多多,收获多多——对c#语言有了更进一步的认识,对oo的思想有了更全面的了解。。。 下一步在设计模式方面的计划:巩固并运用设计模式,巩固:把《大话设计模式》,《设计模式》,《设计模式——可

复用的面向对象基础》,《敏捷软件开发:原则、模式与实践》这些书再结合起来系统的看一看,当然还会去买一些我手头上没有的关于设计模式的书;运用:部门前几天也提倡用c#来改版vb程序,我想这是一个很好的平台,正好有机会把理论的东西在实际中应用,理论加实际——唯一的学习方法。。。 下面对各个模式再简单总结一下: 1、创建型模式: singleton:解决的是实例化对象的个数的问题,比如抽象工厂中的工厂、对象池等,除了singleton之外,其他创建型模式解决的都是 new 所带来的耦合关系。 abstract factory:创建一系列相互依赖对象,并能在运行时改变系列。 factory method:创建单个对象,在abstract factory 有使用到。 prototype:通过拷贝原型来创建新的对象。 factory method,abstract factory, builder都需要一个额外的工厂类来负责实例化“一边对象”,而prototype 则是通过原型(一个特殊的工厂类)来克隆“易变对象”。 如果遇到“易变类”,起初的设计通常从factory method 开始,当遇到更多的复杂变化时,再考虑重构为其他三种工

毕业设计过程总结报告

竭诚为您提供优质文档/双击可除毕业设计过程总结报告 篇一:毕业设计总结与体会范文 总结与体会 随着时间将近过去了一个半月,毕业设计也接近了尾声。经过几周的奋战我的毕业设计终于完成了。在没有做毕业设计以前觉得毕业设计只是对这几年来所学知识的单纯总结,但是通过这次做毕业设计发现自己的看法有点太片面。毕业设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。通过这次毕业设计使我明白了自己原来知识还比较欠缺。自己要学习的东西还太多,以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。通过这次毕业设计,我才明白学习是一个长期积累的过程,无论是在以后的工作还是生活中都应该不断的学习,努力提高自己知识和综合素质。同时也明白了人生不可能存在一帆风顺的事,只有自己勇敢地面对人生中的每一个挫折和失败,才能通往自己的罗马大道。 在设计的过程中我总会遇到这样那样的问题,我有失落

过,烦恼过,悲伤过,但我明白这又是我人生中的一大挑战,角色的转换,这除了有较强的适应力和乐观的生活态度外,更重要的是得益于两年的学习积累和技能的培养。在这里我知道我的将来会有光辉灿烂的一天。在这次毕业设计里,给我仅是初步的经验积累,对于迈向社会远远不够的,我必须做出更大的努力。 虽然在完成毕业设计的过程中有过失落,有过烦恼,有过悲伤,但在这次毕业设计中也使我们的同学间的关系更进一步,在此期间同学之间互相帮助,有什么不懂的大家在一起商量,一起讨论,听听不同的看法不同的意见,这使我们能更好的理解知识,透彻知识,运用知识,因此在这里我要非常感谢帮助我的同学,谢谢你们的帮助,谢谢你们! 在毕业设计完成的过程里,我更明白了要做好人生规划的重要性,在此我要有以下几点规划: 一、继续学习,虽然我们即将步入社会,但我们绝不能忘记学习,不仅仅要学习知识,学习技能,还要学习如何与人相处,即将步入社会的我们光有知识技能是不能在这样充满竞争的社会好好发展我们的未来的了,所以我们要学习与人相处,与人共事。 二、也许我们有知识,有技术,但我们缺少的是经验,实际动手的经验,所以我们步入社会后,要不断的积累经验,不断的实践,只有这样我才能在掌握知识的同时把握

室内装饰个人工作总结

室内装饰个人工作总结 第一篇:装饰装修室内设计师年底工作总结年底总 结 部门:设计部职位:设计师姓名:尊敬的各位领导各位 同事: 你们好! 首先感谢公司的各位领导和同事给予我信任和支持,在公 司领导的指引部门领导带领下,在各位同事的大力协助下,工作上取得些进步,下面我谈下个人的工作心得和本季度的成果! 设计工作是痛苦与快乐的炼狱,每当面临重大的设计任务时充满了压力,开始搜集各种资料(包括艺术形式、色彩搭配、各种风格的设计图片等),接下来寻找设计灵感,沉思、焦灼,经过痛苦煎熬,终于有了满意的创意时倍感轻松。每当经过艰苦的磨砺,自己的劳动成果得到客户的肯定时,便是工作中最大的快乐!充满了快意。 当然,工作中的痛苦与快乐首先要求有坚定的信念与立场,遵纪守法,爱岗敬业的强烈责任感和事业心。因为热爱自己的工作,所以精通本岗位的专业知识和业务技能,熟悉有关行业规范,关注行业的发展趋势。时刻保持强烈的创新意识。理解自己工作和责任,履行了岗位职责,能够高质、高效的完成本职工作。 对待每位客户,我都是认认真真保质保量,按时完成,尽我最大的努力做好每一份工作。过去的几个月整体上是紧张的、忙碌的、充实的,也是充满责任心的几个月。展望新的工作时,我希望我能够再接再砺,同时也需要再加强锻炼自身的设计水

平和业务能力,在以后的工作中与同事多沟通,多探讨。争取做出更大的成绩来,为公司带来更大的效益! 在接下来的工作中要保持着良好的心态,不怕苦不怕累,任劳任怨,多付出少抱怨,做好自己的本职工作。在以往的工作当中也存在着不足,争取改正以往的缺点,总结经验吸取精华,分析失败原因和工作当中的不足,同时可趁着这两个月客户相对较少的状态下,多学习专业知识,尽可能多去现施工工地熟悉每样工艺的施工规范,做好战前的准备! 第二篇:室内设计个人工作总结财院校史馆充分融合区位环境、建筑功能、交通流线等要素。根据建设规模和广场视线分析,建筑主体呈长方形,层顶为黑色陶瓦四坡顶,坡度30°。外墙实体墙面以青砖包裹,以传统的建筑语汇营造庄重、朴实的历史氛围;从校园总体流线分析,为迎合来自西南向(东大道)的校史馆主要参观人流,在主体中部嵌入呈60° 夹角斜交玻璃体和横贯中部的带状采光廊,界定主入口方向和内部交通节点。简单的形体处理使晶莹通透的玻璃体成为视觉焦点,强调主入口的识别性,增添建筑主体的飘逸感与时代感。传统与现代建筑语汇对立统一,和谐共处,体现稳健而不失灵动、庄重而不乏个性的建筑性格。 建筑材质、色彩和立面细部刻画延续同一理念。竖向凸体和条窗具有韵律感和节奏感,屋顶 1.5米挑檐端庄典雅;竖明横隐的玻璃体竖向构件错落有致,与之呼应。12mm和18mm两种厚度的定制毛面砖勾勒墙体 横向线条,光影交错,时隐时现。竖向条窗窗槛墙石材拼贴,以校史馆屋顶平面投影为原型,简化为主题装饰图案,赋矛建筑深厚的内涵。 四、内部空间

[23种设计模式汇总]结构型模式_装饰模式

装饰模式 概述 在软件系统中,有时候我们会使用继承来扩展对象的功能,但是由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀。如何使“对象功能的扩展”能够根据需要来动态地实现?同时避免“扩展功能的增多”带来的子类膨胀问题?从而使得任何“功能扩展变化”所导致的影响将为最低?这就是本文要讲的Decorator模式。 意图 动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。[GOF 《设计模式》] 结构图 图1 Decorator模式结构图 生活中的例子 装饰模式动态地给一个对象添加额外的职责。不论一幅画有没有画框都可以挂在墙上,但是通常都是有画框的,并且实际上是画框被挂在墙上。在挂在墙上之前,画可以被蒙上玻璃,装到框子里;这时画、玻璃和画框形成了一个物体。

图2 使用有画框的画作为例子的装饰模式对象图 装饰模式解说 在软件开发中,经常会遇到动态地为一个对象而不是整个类增加一些功能的问题,还是以我惯用的记录日志的例子来说明吧(也许在Decorator模式里面用这个例子不是特别合适)。现在要求我们开发的记录日志的组件,除了要支持数据库记录DatabaseLog和文本文件记录TextFileLog 两种方式外,我们还需要在不同的应用环境中增加一些额外的功能,比如需要记录日志信息的错误严重级别,需要记录日志信息的优先级别,还有日志信息的扩展属性等功能。在这里,如果我们不去考虑设计模式,解决问题的方法其实很简单,可以通过继承机制去实现,日志类结构图如下: 图3 实现代码如下: public abstract class Log { public abstract void Write(string log); } public class DatabaseLog : Log { public override void Write(string log)

大话设计模式读书笔记

第一章简单工厂模式 1、代码规范性 A、变量命名规范化 B、if语句逻辑清晰,单向分支逻辑判断应该避免使用重复的if判断 C、异常情况判断 2、面向对象编程 (1)面向对象编程优点:A、可维护B、可复用C、可扩展D、灵活性好 (2)通过封装、继承、多态将程序耦合性降低,使用设计模式使程序更加灵活,易改,易复用 3、业务封装(将业务逻辑与界面逻辑分开) (1) 低耦合:高保密,高易维护性。 (2) 简单工厂模式 以下为C#代码: Public class OperationFactory { Public static Operation CreateOperate(string operate) { Operation oper = null; Switch (operate) { Case “+”: oper = new OperationAdd(); Break; Case “-”: Oper = new OperationSub(); Break; Case “*”: Oper = new OperationMul(); Break; Case “/”: Oper = new OperationDiv(); Break; } Return Oper; } }

(3) UML类图 *注:1、“动物”代表类 2、类分三层:第一层显示类的名称,如是抽象类,用斜体表示; 第二层是类的特性,即字段和属性; 第三层是类的操作,即方法和行为; 3、“+”表示public,“-”表示private,“#”表示protected 4、接口图顶部有<>标注,第一行是接口名称,第二行 是接口方法。 5、继承关系用“△”和实线表示,子类指向父类,表示子类继承 父类 6、实现接口使用“△”和虚线表示,实现类指向接口,表示类实 现了接口 7、类与类关联关系用虚线相连 8、聚合关系(弱拥有关系,拥有者包含被拥有者,但被拥有者不 是拥有者不可分割的一部分)使用“◇”+ 实线箭头(→)表示, 聚合体指向单体,表示聚合体由单体聚合成。聚合体有基数概 念,表示几个单体可以聚合成几个聚合体。 9、合成关系(强拥有关系,合成前体与合成体是严格的部分和整 体的关系)使用“◆”+ 实线箭头(→)表示,合成体指向合成前 体,表示合成体由合成前体合成。合成关系有基数概念,表示 几个合成前体可以组合成几个合成体。

大学毕业设计工作总结

大学毕业设计工作总结 毕业设计是教学过程的最后阶段采用的一种总结性的实践教学环节。通过毕业设计,能使学生综合应用所学的各种理论知识和技能,进行全面、系统、严格的技术及基本能力的练习。大学毕业设计工作总结范文,一起来看看。 信息工程系08级毕业生 259人,计算机多媒体技术 60人,计算机信息管理 30人,计算机应用技术56人,软件技术1班61人,软件技术2班54人。其中极个别同学没有按期完成毕业设计,其余所有毕业生全部参加了毕业设计的写作和设计答辩。我系08届毕业论文的组织工作在XX年11月底就已开始,发给学生的毕业论文参考题目经各系教师充分讨论确定并介绍给学生参考。在学生教师双向选择的基础上,根据学生设计题目的内容,安排了毕业生毕业设计指导教师。 为了保证毕业设计的质量,规范毕业设计的写作格式,我系作了统一规定,要求各专业毕业生在指导教师的指导下,按规定时间先后完成资料收集、设计开题报告、论文大纲、初稿修改和最后定稿,并要求毕业论文应包含如下要素:封面、内容摘要、关键词、目录、正文、 * ,各阶段工作成果等附表,定稿后按论文的规范格式打印成册上交系上。 通过广大师生的努力,本届毕业生的毕业设计格式规范、内容充实、质量较高,部分论文具有现实意义。我系一直坚持严格把握毕业

论文质量关,经过各论文指导老师评议,选出 13 名同学的毕业论文作为优秀毕业设计,进行本届毕业设计答辩。 答辩及其评分工作如下: 一、提前做好毕业设计工作计划,对毕业设计教学管理工作做好 安排。 在总结前几次毕业设计工作经验的基础上,我系进一步强调抓好 毕业设计工作的重要性,使指导教师和学生提高质量意识,强化严肃的科学研究作风,为了争取主动,使本次毕业设计上档次,提高质量,我们提早准备,早在XX年11月份,我系就有关毕业设计选题,指 导老师安排,毕业设计写作及辅导程序等问题制订了较为详细的计划。要求指导教师在具体指导过程中要积极认真,严把学生论文的每一个环节,同时在每一个撰写环节上给予学生详细耐心的指导,重在给以方法指导,锻炼学生的发现问题、分析问题、针对问题进行科研的能力以及论文撰写技巧。 二、加强毕业设计撰写和指导的每一个环节,严格把关,毕业设 计各环节的组织与实施较好 1、我系周萍、陶丽老师就毕业设计选题及对写作程序、规范、要求作了相当细致的工作。学生确立选题后,马上组织辅导老师与学生见面,要求和指导老师就毕业设计选题与学生进行交流,提出自己的意见供学生参考。 2、严格按照毕业设计计划程序组织辅导。依据论文写作规范,我系专门组织指导教师和学生共同学习论文写作格式要求,学生和指导

公司企业工作总结装修公司工作总结_0863文档

2020 公司企业工作总结装修公司工作 总结_0863文档 EDUCATION WORD

公司企业工作总结装修公司工作总结_0863文档 前言语料:温馨提醒,教育,就是实现上述社会功能的最重要的一个独立出来的过程。其目的,就是把之前无数个人有价值的观察、体验、思考中的精华,以浓缩、 系统化、易于理解记忆掌握的方式,传递给当下的无数个人,让个人从中获益,丰 富自己的人生体验,也支撑整个社会的运作和发展。 本文内容如下:【下载该文档后使用Word打开】 时间一晃而过,转眼间又将跨过一个年度之坎,回首这一年,虽没有很好的业绩,但也算经历了一段不平凡的考验和磨砺,我是今年九月底来到公司的,虽在公司工作时间不长,但是也有一定收获,临近年终,我感觉有必要对自己的工作做一下总结,目的在于吸取教训,提高自己,以至于把工作做到更好,自己也有信心,有决心把明年的工作做的更好,下面对我的工作进行总结:我是今年九月底到本公司工作的,之前从事的是工装工作,因为对家装的热爱使我选择了xx,在没有来xx工作以前,我是没有家装装修经验的,仅凭对家装的热爱,而缺乏家装装修设计施工经验和行业知识,为了迅速融入到这个行业中来,到了公司以后,一切从零开始,一边学习沟通技巧,一边去工地现场看施工,遇到沟通上的问题,我经常请教史主管和其他经验丰富的同事,在同事的帮助下,取得了良好的效果,也使我感到受益匪浅,这

三个月来,业绩虽不出色,但是这段时间我学习了解到了如何更好的与团队相处、合作并进,学到了如何开展业务,也相应的进行了实践,也对xx的文化、使命有了深刻的共鸣,对家装行业有了初步的认识。 通过不断地学习产品知识,收取同行业之间的信息和积累市场经验,现在对家装市场有了一个初步的认识和了解,虽然我的成绩远不如其他同事那么卓越,但我有信心,有决心做好,现在我逐渐可以清晰、流利的应对客户所提到的问题,准确的把握客户的信息,良好的与客户沟通,因此取得了一些客户的信任,这对以后成为设计师打下了扎实的基础。 这三个月虽有进步,但是也有不足的地方需改进,对于家装市场了解的还不够深入,对公司产品的技术问题掌握过度薄弱,不能十分清晰的向客户解释工艺要求,业务上,电话营销的技巧还不是很到位,针对市场上的工艺,做法,xx本公司的工艺、产品了解还远远不够,这些还需要继续学习。 总结下来,在公司工作的这段时间,接触到了许多事物,产生了许多新问题,也学习到了许多新知识,新经验,使自己在思想认识和工作能力上有了新的提高和进一步的完善,在日常的工作中,我时刻要求自己从实际出发,坚持高标准、严要求,力求做到业务素质和道德素质双提高。 展望新的工作年度,希望能够再接再厉,同时也需要加强锻炼自身的设计水平,在以后的工作中与同事多沟通、多探讨,进一步提高自己专业知识技能,积极吸收新的观念与设计理念,不

几种常用的设计模式介绍

几种常用的设计模式介绍 1. 设计模式的起源 最早提出“设计模式”概念的是建筑设计大师亚力山大Alexander。在1970年他的《建筑的永恒之道》里描述了投计模式的发现,因为它已经存在了千百年之久,而现代才被通过大量的研究而被发现。 在《建筑的永恒之道》里这样描述:模式是一条由三个部分组成的通用规则:它表示了一个特定环境、一类问题和一个解决方案之间的关系。每一个模式描述了一个不断重复发生的问题,以及该问题解决方案的核心设计。 在他的另一本书《建筑模式语言》中提到了现在已经定义了253种模式。比如: 说明城市主要的结构:亚文化区的镶嵌、分散的工作点、城市的魅力、地方交通区 住宅团组:户型混合、公共性的程度、住宅团组、联排式住宅、丘状住宅、老人天地室内环境和室外环境、阴和阳总是一气呵成 针对住宅:夫妻的领域、儿童的领域、朝东的卧室、农家的厨房、私家的沿街露台、个人居室、起居空间的序列、多床卧室、浴室、大储藏室 针对办公室、车间和公共建筑物:灵活办公空间、共同进餐、共同小组、宾至如归、等候场所、小会议室、半私密办公室 尽管亚力山大的著作是针对建筑领域的,但他的观点实际上适用于所有的工程设计领域,其中也包括软件设计领域。“软件设计模式”,这个术语是在1990年代由Erich Gamma等人从建筑设计领域引入到计算机科学中来的。目前主要有23种。 2. 软件设计模式的分类 2.1. 创建型 创建对象时,不再由我们直接实例化对象;而是根据特定场景,由程序来确定创建对象的方式,从而保证更大的性能、更好的架构优势。创建型模式主要有简单工厂模式(并不是23种设计模式之一)、工厂方法、抽象工厂模式、单例模式、生成器模式和原型模式。 2.2. 结构型 用于帮助将多个对象组织成更大的结构。结构型模式主要有适配器模式、桥接模式、组合器模式、装饰器模式、门面模式、亨元模式和代理模式。 2.3. 行为型 用于帮助系统间各对象的通信,以及如何控制复杂系统中流程。行为型模式主要有命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板模式和访问者模式。

模式总结

设计模式总结 一、创建型模式 简单工厂 简单工厂最大优点在于工厂类中包含了必要的逻辑判断(switch),根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。 工厂方法 工厂方法模式(Factory Method),定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 工厂方法模式实现时,客户端要觉定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断移到了客户端代码来进行。你想要加功能,本来是改工厂类的,而现在时修改客户端。 抽象工厂 抽象工程模式(Abstract Factory),提供一个创建一系列相关或相互依赖对象的接口,而无需制定它们具体的类。 原型模式 原型模式(Prototype),用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。(拷贝对象的引用地址《浅表副本》)。.NET在System命名空间中提供了ICloneable接口(里面唯一的方法Clone()),只要实现这个接口就可以完成原型模式。 建造者模式 建造者模式(Builder),将一个复杂对象的构造过程与它的表示分离,使得同样的构造过程可以创建不同的表示。

如果使用建造者模式,那么用户就只需建造的类型就可以得到它们,而具体建造的过程和细节就不需要知道了。——抽象不应该依赖细节,细节应该依赖于抽象。建造者模式主要用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。 单例模式 单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。 二、行为型模式 观察者模式 观察者模式(Observer),定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生改变时,会通知所有观察者对象,使它们能自动更新自己。 当一个对象的改变需要同时改变其他对象的时候,而且他不知道具体有多少对象有待改变,应该考虑使用观察者模式。观察者模式所做的工作其实就是在解除耦合,让耦合的双方都依赖于抽象,而不依赖于具体,从而使得各自的变化都不会影响另一边的变化。 模板方法模式 模板方法模式(TemplateMethod),定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构可重复定义该算法的某些特定的步骤。 模板方法模式是通过把不变行为搬移到超类,去除子类中德重复代码来体现它的优势。模板方法模式就是提供了一个很好的代码复用平台。 状态模式 状态模式(State),当一个对象的内在状态发生改变时允许改变其行为,这个对象看起来像是改变了其类。

android之大话设计模式

笔者在《如何成为Android高手》一文和视频中曾提出,成为一名真正的Android高手必须掌握和遵循的一些准则:1,学会懒惰 2,精通Android体系架构、MVC、常见的设计模式、控制反转(IoC) 3,编写可重用、可扩展、可维护、灵活性高的代码 4,高效的编写高效的代码 5,学会至少一门服务器端开发技术 上面的几条准则非常明确的指出:熟练掌握设计模式以及设计模式相关的内容是在成为Android高手的道路上必修的课程。 Android号称是首个为移动终端打造的真正开放和完整的移动软件。作为一个气象万千的平台,设计原则、设计模式、IoC以及相关思想的应用是是导致Android之所以能够取得今日的Android的成功的核心因素之一。 为了让国内的Android爱好者们从浩如烟海的设计模式相关的系列书籍和文档中解脱出来,本着一种方便国内Android 开发者更好、更快、更轻松的对Android的设计原则、设计模式、IoC(控制反转)理解和掌握的心态,国士工作室成员在百忙之中编写了《Android之大话设计模式》一书,该书涵盖了6中设计原则、主要的设计模式、UML建模语言和StarUML建模工具的使用等,主要内容如下: ?前言(已发布) ?针对接口编程---问世间情为何物直教人生死相许(已发布) ?单一职责原则乔峰VS慕容复(已发布) ?开放封闭原则孙悟空任弼马温一职(已发布) ?里氏代换原则法海捉拿白蛇新解(已发布) ?迪米特法则慈禧太后为何不和陌生人说话(已发布) ?合成聚合复用原则刘邦VS韩信(已发布) ?简单工厂模式一见钟情的代价(已发布) ?工厂方法法模式让麦当劳的汉堡适合不同MM的不同口味(已发布) ?抽象工厂模式MM的生日 ?单例模式你是我的唯一 ?原型模式肉麻情话 ?建造者模式让我们同居吧! ?装饰模式见MM的家长 ?外观模式MM也迷恋炒股? ?享元模式短信可以这样发 ?适配器模式笔记本电脑的适配器 ?代理模式QQ聊天机器人 ?桥接模式最重要的是要有一颗让MM快乐的心 ?组合模式MM的生日礼物 ?模板方法模式人的一生应该这样度过 ?观察者模式GG在MM身边有两个妹妹 ?状态模式在一天的不同时间要给MM发不通的短信 ?策略模式帮助MM选择商场打折策略 ?职责链模式帮助MM选择商场打折策略 ?统一建模语言UML简介和StarUML使用 本着开放、分享、交流的原则,现免费开放该书,希望能够为推动国内Android的发展贡献力量。

相关文档
最新文档