随笔分类 - Design Pattern
摘要:又是一个周三,快要下班了,老大突然拉住我,喜滋滋的告诉我:“XX公司很满意我们做的模型,又签订了一个合同,把奔驰、宝马的车辆模型都交给我们公司制作了,不过这次又额外增加了一个需求:汽车的启动、停止、喇叭声音、引擎声音都由客户自己控制,他想什么顺序就什么顺序, 这个没问题吧?”又是一个时间紧,工程量大的项目。首先,我们分析一下需求,奔驰、宝马都是一个产品,它们有共有的属性,XX公司关心的是单个模型的运行过程:奔驰模型A先有引擎声音,然后再响喇叭;奔驰B是先启动起来,然后再有引擎声音,这才是XX公司要关心的。那到我们老大这边呢,就是满足人家的要求,要什么顺序就立马能产生什么顺序的模型出来,我就负责
阅读全文
摘要:故事:辉煌工程—制造悍马周三一上班,老大就跑过来叫我开会,原来是一个好消息,老大终于把XX模型公司的口子打开了,要我们做悍马模型,所以老大信心满满,说一定要把这个做好,但是开发只有一周的时间,我说这要分析,设计,测试,还要考虑各种性能,一周做不完啊, 老大说只做最基本的实现就可以,既然老大都发话了,那只能拼命做吧。既然领导都说了,不考虑扩展性,那好办,先按照最一般的经验设计类图:public abstract class HummerModel{ // start car public abstract void start(); // stop car public ...
阅读全文
摘要:女娲的失误:工厂方法模式中讲了女娲造人的故事。人是造出来了,世界也热闹了,可以低头一看,都是清一色的类型,缺少关爱、仇恨、喜怒哀乐等情绪,人类的生命太平淡了,女娲一想,猛然一拍脑袋,忘记给人类定义性别了,那怎么办呢?八卦炉分为两个,一个用于造女人,一个用于造男人,有了性别,就有了爱情,也就有了丰富的人生。public interface Human{ void getColor(); void talk(); void getSex();}public abstract class AbstractBlackHuman implements Human{ public ...
阅读全文
摘要:先讲个故事:女娲造人,很多人都应该听过这个故事。故事是这样的:首先,女娲采集黄土捏成人的形状,然后到八卦炉中烧制,最后放置到大地上生长,工艺过程是没有错的,但是意外随时会发生:第一次烤泥人,感觉应该熟了,往大地一放,哇,没烤熟!于是一个白人诞生了。第二次烤泥人,上一次没烤熟,这次多烤一会儿,放到世间一看,嘿,熟过头了,于是黑人诞生了。第三次烤泥人,一边烧制一边察看,直到表皮微黄,嘿,刚好,于是黄色人种诞生了。我们画EA图,模拟一下这个过程:public interface Human{ void getColor(); void talk();}public class Black...
阅读全文
摘要:定义:Ensure a class has only one instance, and provide a global point of access to it.确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。饿汉式package com.anllin.designpattern;public class Singleton{ private static final Singleton instance = new Singleton(); private Singleton() { } public static Singleton g...
阅读全文
摘要:一.单一职责原则Single Responsibility Principle, 简称SRP。定义:There should never be more than one reason for a class to change.应该有且仅有一个原因引起类的变更。职责的划分?单一的定义和级别?应该根据实际业务情况而定。关注变化点。实际使用时,类很难做到职责单一,但是接口的职责应该尽量单一。二.里氏替换原则Liskov Substitution Principle, 简称LSP。定义:Functions that use pointers or references to base classe
阅读全文