随笔分类 -  设计模式

摘要:背景:不久前单位上线一款应用,上了生产环境之后,没过多久,便吃掉了服务器所有的内存,最后导致网站服务挂了。 在解决了这一问题之后,我发现这其实是典型的一单例模式,现分享一下。 之前存在问题的老代码如下: 这是导致问题所在的那个关键方法 以上这段代码是有问题的,大家看出来了吗? 问题在于,虽然方法声明 阅读全文
posted @ 2017-01-12 13:51 Master HaKu 阅读(4394) 评论(0) 推荐(0) 编辑
摘要:1. 经典的设计模式中的代码publicclassSingleton{privatestaticSingletoninstance;//唯一实例protectedSingleton(){}//封闭客户程序的直接实例化publicstaticSingletonInstance{get{if(instance==null)instance=newSingleton();returninstance;}}} 在多线程环境下存在缺陷, 最终将会保存最后创建的那个实例2. 改进后的多线程SingletonclassSingleton{privateSingleton(){}[ThreadStatic]. 阅读全文
posted @ 2012-05-30 13:42 Master HaKu 阅读(465) 评论(0) 推荐(0) 编辑
摘要:Decorator Pattern: Attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality.什么是装饰模式? 装饰模式被用来应对类型在继承过程中快速膨胀的情况,而导致膨胀的原因往往是我们需要为类型增加新的职责(功能)现实生活中的例子: 手机从一开始的只能打电话,收发短信,到后来的听MP3, GPS, 拍照,智能化功能等等装饰模式的目的: 动态为对象增加新的职责 阅读全文
posted @ 2012-04-01 09:13 Master HaKu 阅读(192) 评论(0) 推荐(0) 编辑
摘要:A DI CONTAINER is a software library that can automate many of the tasks involved incomposing objects and managing their lifetimes. Although it’s possible to write all therequired infrastructure code with POOR MAN’S DI, it doesn’t add much value to anapplication. On the other hand, the task of compo 阅读全文
posted @ 2012-03-31 09:05 Master HaKu 阅读(1273) 评论(0) 推荐(0) 编辑
摘要:原则1:DRY(Don't repeat yourself)即不要写重复的代码,而是用“abstraction”类来抽象公有的东西。如果你需要多次用到一个硬编码值,那么可以设为公共常量;如果你要在两个以上的地方使用一个代码块,那么可以将它设为一个独立的方法。SOLID设计原则的优点是易于维护,但要注意,不要滥用,duplicate 不是针对代码,而是针对功能。这意味着,即使用公共代码来验证OrderID和SSN,二者也不会是相同的。使用公共代码来实现两个不同的功能,其实就是近似地把这两个功能永远捆绑到了一起,如果OrderID改变了其格式,SSN验证代码也会中断。因此要慎用这种组合,不 阅读全文
posted @ 2012-03-14 17:40 Master HaKu 阅读(386) 评论(0) 推荐(0) 编辑
摘要:在平时开发程序的过程中,自己经常会写一些控制台小程序进行测试某个功能,事后我们会寻找这些小程序,如果不仔细管理,经常会找不到。由于每个控制台小程序都有自己独立的 Main方法,所以我们不能把他们都放在一个Solution里面,这样在编译整个项目的时候会通不过,但是又不想为每个小程序都单独建立一个项目,这样又太浪费,因为每个都是一个非常简单的代码文件。于是我想到了利用工厂模式,我是这样做的:首先创建... 阅读全文
posted @ 2009-09-16 12:07 Master HaKu 阅读(517) 评论(0) 推荐(0) 编辑
摘要:抽象工厂(Abstract Factory)模式 不同于简单工厂和工厂方法,抽象工厂用于创建一个产品族,即抽象工厂模式用于创建一系列类,这些类在业务上有关联。我们来举个快餐店的例子。场景:快餐店的套餐分为汉堡和饮料,汉堡可以选鸡肉汉堡,鱼肉汉堡,巨无霸等等, 饮料可以选咖啡,可乐,橙汁等等。对于业务来说,汉堡和饮料分别可以被抽象为两类产品,因此,我们可以建立2个接口。汉堡可以有2个方法,一个是打印... 阅读全文
posted @ 2009-06-27 20:03 Master HaKu 阅读(318) 评论(0) 推荐(0) 编辑
摘要:工厂方法(Factory Method)模式又叫做多态性工厂(Polymorphic Factory)。简单工厂模式的优缺点优点:将类的创建逻辑从客户端移入工厂类。缺点:对开-闭原则支持不够,如果有新类加入,必须修改工厂类的逻辑。工厂方法克服了简单工厂模式的缺点,引入了多态性。工厂方法和简单工厂的区别:简单工厂模式的核心是一个具体类,工厂方法模式的核心是一个抽象类。下面我们来看一下工厂方法的具体实... 阅读全文
posted @ 2009-06-27 13:28 Master HaKu 阅读(307) 评论(0) 推荐(0) 编辑
摘要:简单工厂(Simple Factory)模式又可以叫做:静态工厂方法(Static Factory Method),它是类的创建模式。场景:画图程序,画圆,矩形,三角,等等。方案:需要客户端由一个指定的工厂方法来创建各种画图类。客户端不需要知道各个画图类的名称, 只需要给工厂方法传入画图类的参数,如:circle, square, triangle, etc,这些参数是固定的。 如果画图类改变,甚... 阅读全文
posted @ 2009-06-27 11:34 Master HaKu 阅读(524) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示