- 博客(11)
- 资源 (1)
- 收藏
- 关注
原创 使用桥接模式让两个抽象层级能够独立的演化。
1,A是一个抽象类,它HAS-A抽象类B. A有不同的实现类,B也有不同的实现类。见下面简画的图: 使用桥接模式可以让A和B这两个抽象层级独立的变化和扩展而不会相互影响。在客户端调用时采用下面的形式比较灵活,并且功能可插拔: void main(..){ B b1=new Bimpl1(); B b2=new Bimpl2(); // A a=new Aimpl1(); a
2015-06-26 11:18:34 446
原创 实用软件开发流程
1,取得需求。 2,从需求归纳出用例列表或功能列表。 3,采用用例驱动或功能驱动进行代码片段实现(可包含类图的设计)。 用例驱动:指让一个使用流程通过(往往包含多个功能)。 功能驱动:指让一个独立的具体功能通过。 4,tdd测试让每一个用例或功能通过。 5,采用设计原则和模式增加系统的灵活性。 6,集成测试。 7,发布。
2015-06-25 15:44:57 445
原创 android 实现文字自动滚动的走马灯效果。
红色为关键代码。 1,textview设置: android:id="@+id/tvAutoScroll" android:layout_width="50dp" android:layout_height="wrap_content" android:text="1222222222
2015-06-23 17:56:14 1486
原创 面向对象就是面向生活,而模式就是解决生活中特定问题的最佳实践。
1,模式源于生活而又服务于生活。 2,面向对象编程就是面向生活编程,所以生活中的问题都有一个对应的面向对象结构。 3,为什么面向对象能解决大规模的软件设计?因为面向对象是生活中问题的一一映射。生活中出现的问题均可一一映射成对象结构。
2015-06-16 10:46:17 510
原创 android移植ffmpeg的编译
一,ffmpeg编译(版本ffmpeg-HEAD-b2ad33d.tar) 1,安装汇编编译器[sudo apt-get install yasm]. 2,ffmpeg根目录放编译脚本build_android.sh内容如下:(备注:NDK相关路径按自己实际情况修改,若需包含编译x264和mp3的话红色部分用于指定x264和mp3的头文件和库所在目录。) #!/bin/bash N
2015-06-04 10:01:13 852 3
原创 浅谈c++复制构造函数和赋值操作符。
何时调用: 1,如果变量没有声明过,那么将会调用复制构造函数。如: A a; A a2=a;//调用复制构造函数将a复制到a2. 2,如果变量已经声明过,将会调用赋值操作符。 A a; A a2; a2=a;//调用赋值操作符将a的值复制到a2 备注:不管是复制构造函数还是赋值操作符,都要注意类成员存在指针的情况。这种情况下,如果采用浅复制那么应该使用引用计数;当然
2015-06-03 14:42:14 392
原创 c++中类型的隐式转换。
在满足下条件时,编译器才会使用隐式转换: 1,存在匹配的构造函数。 如:class A { public: A(B); }; // A a=B; 2,存在声明的转换操作符: class B { public: operator A() const; }; // A a=B; 备注:隐式转换有时可能造成二义性。为了阻止编译器使用隐式转换,
2015-06-03 14:24:18 407
原创 利用迭代器,适配器模式实现统一数据访问接口。
package com.iterator; public interface Iter { int next(); boolean hasNext(); } package com.iterator; public class ArrayIter implements Iter { private int[] array; private int index; pu
2015-06-01 11:28:00 506
原创 策略模式实现可拓展可插拔的功能。
package com.main; public interface Calculator { int calculate(int input); } package com.main; public class C1 implements Calculator{ @Override public int calculate(int input) { // TODO Auto
2015-06-01 11:00:27 1467
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人