奔跑的肥猪

导航

2011年12月23日 #

Null Object 模式

摘要: 作为java程序员,最讨厌的莫过于解决无穷无尽的nullpointexception.其实利用null object模式优雅的解决这个问题:public interface Employee{public void pay();public boolean isTimeToPay(Date payDate);public static final Employee NULL = new Employee(){public boolean isTimeToPay(Date payDate){return false;}public void pay(){ }};}public clas... 阅读全文

posted @ 2011-12-23 17:57 布兜兜 阅读(302) 评论(0) 推荐(0)

单例模式(Singleton Pattern & MonoState)

摘要: 确保一个类只有一个实例并提供一个对它的全局访问指针public class Person { private String name; private int age; private static Person person;protected Person() { super(); }public String getName() { return name; }public void setName(String name) { this.name = name; }public int getAge() { return age; }public void setAge(int age 阅读全文

posted @ 2011-12-23 17:50 布兜兜 阅读(241) 评论(0) 推荐(0)

接口隔离原则(ISP)

摘要: 客户端不应该被强迫实现一些他们不会使用的接口(霸王条款)。定义了某个接口,迫使它的实现类必须实现它的所有方法,即使某个方法实现类根本不需要,导致实现类变得越来越胖。public interface Killer { void shoot();}public class MachineGun implements Killer {@Overridepublic void shoot() { DebugLog.log("machine gun, enemies are killed");}}public class Pistol implements Killer {@Over 阅读全文

posted @ 2011-12-23 17:01 布兜兜 阅读(220) 评论(0) 推荐(0)

里氏代换原则(LSP)

摘要: 子类必须能替换成它们的父类(龙生龙,凤生凤,老鼠的儿子会打洞)可以这么理解,进公司之前人事当然会告诉你公司的制度,如果这个公司出得米米比较多,你可能会看都不看就签上你的大名,如果有一天人事告诉你因为你一个月因为连续迟到3天而将被开除,你肯定后悔没有认真看过制度,这个小例子说明一旦你继承某个类(成为公司员工),你就不该该改变它的基本行为(一个月迟到3次),否则你将死的很惨.(或者你是超人,可以拯救全人类)public interface IWorker { void eat(); void work();}public class Manager {private IWorker iWorker 阅读全文

posted @ 2011-12-23 16:52 布兜兜 阅读(236) 评论(0) 推荐(0)

依赖倒置原则(DIP)

摘要: 高层 不依赖 低层 实现不依赖细节,二者都依赖接口举例来说,如果设计一个软件来通过观察当前炉内的问题来控制火炉开关,可以把程序写成如下形式:public class Thermometer{private int getCurrentTemp;public int getGetCurrentTemp() {// TODO Auto-generated method stubreturn getCurrentTemp;}public void setGetCurrentTemp(int getCurrentTemp) {this.getCurrentTemp = getCurrentTemp;} 阅读全文

posted @ 2011-12-23 16:42 布兜兜 阅读(238) 评论(0) 推荐(0)

开放封闭原则(OCP)

摘要: open for extention, close for modification当需求发生变化时,不应该在相关类里面改变现有逻辑,而是通过实现相关接口完成业务功能。电脑由cpu,memory,motherboard组成。public class Cpu {private String name;private int price;public Cpu(String name, int price) {super();this.name = name;this.price = price;}public String getName() {return name;}public void s 阅读全文

posted @ 2011-12-23 16:27 布兜兜 阅读(200) 评论(0) 推荐(0)

SRP(Single Responsibility Principle) 单一职责原则

摘要: SRP的意思就是一个类只有一个引起他变化的原因,怎么理解,就是将稳定的部分封装在一个class里面,变化的部分用接口隔离起来。public interface IDBAction { void add(); void delete();}public class DBManager implements IDBAction {@Overridepublic void add() {if (isLegalUser()) {DebugLog.log("add action");}}@Overridepublic void delete() {if (isLegalUser()) 阅读全文

posted @ 2011-12-23 16:17 布兜兜 阅读(603) 评论(0) 推荐(0)

面向对象设计5大准则

摘要: OO 设计5原则单一职责原则(SRP) 仅有一个引起其变化的原因开放封闭原则(OCP) 欢迎扩展,拒绝修改(关键是抽象)依赖倒置原则(DIP) 高层 - > 低层 实现->细节里氏代换原则(LSP) 子类必须能替换成它们的父类(龙生龙,凤生凤,老鼠的儿子会打洞)接口隔离原则(ISP) 客户端不应该被强迫实现一些他们不会使用的接口(霸王条款) 阅读全文

posted @ 2011-12-23 16:07 布兜兜 阅读(323) 评论(0) 推荐(0)

2011年12月5日 #

一个工程引用另外一个工程加载时出现二个reference.appstartup时出错

摘要: 出错log如下:W/dalvikvm( 4427): Class resolved by unexpected DEX: Lcom/telenav/app/android/cingular/TeleNav;(0x470ebe60):0x14ad50 ref [Lcom/telenav/tnui/core/android/AndroidActivity;] LcoW/dalvikvm( 4427): (Lcom/telenav/app/android/cingular/TeleNav; had used a different Lcom/telenav/tnui/core/android/And 阅读全文

posted @ 2011-12-05 19:35 布兜兜 阅读(714) 评论(0) 推荐(0)

2011年8月26日 #

protobuf的使用

摘要: 最近项目中用到protobuf,特地研究了一下.protobuf主要是将对象序列化的一种协议,但是因为google加入了自己的算法该对象所占用的空间比较小。个人也是按照下面的url进行测试:http://www.cnblogs.com/dcba1112/archive/2011/05/01/2034028.html测试过程中发现下面的问题:1, 编译版本和jar版本应该一致,不然会出现不匹配的问题,该url下载编译工具http://code.google.com/p/protobuf/downloads/detail?name=protoc-2.4.1-win32.zip&can=2& 阅读全文

posted @ 2011-08-26 17:30 布兜兜 阅读(5625) 评论(0) 推荐(0)