享元模式可以避免大量非常相似类的开销。在程序设计中,有时需要生成大量细粒度的类实例来表示数据。如果能发现这些实例数据除了几个参数外基本都是相同的。有时就能够大幅度地减少实例化的类的数量。如果能把那些参数移到类实例的外面,在方法调用时将它们传递进来,就可以通过共享大幅度地减少单个实例的数目。
Archive for June, 2014
享元模式 C++实现
June 20th, 2014桥梁模式 C++实现
June 19th, 2014桥梁模式主要解决多层继承,比如我们可以想想,人可以分为男人女人,人又有不同的行为。如果把这个两个class继承,也就意味着是男人行为A,男人行为B。女人行为A,女人行为B。
这种方式非常难以扩展,所以桥梁模式派上用场,它将表示和实现解耦,两者可以独立的变化。
其中这种模式又有一些像策略模式,又有一些像建造者模式。当我们考虑一个对象的多个变化因素可以动态变化的时候,考虑使用桥接模式
» Read more: 桥梁模式 C++实现
访问者模式 C++实现
June 17th, 2014访问者模式,顾名思义就是使用vistor类来访问其他类的intern数据,而不改变intern的数据结构和代码。
这样可以分开数据显示和业务逻辑,使得代码更加清晰。
访问者模式的优点就是:灵活度非常高,有优秀的拓展性。
缺点就是:不依赖抽象元素,违反了依赖倒置的原则,直接依赖实现类,拓展实现类比较难。
» Read more: 访问者模式 C++实现
备忘录模式C++实现
June 12th, 2014备忘录模式是一种比较重要的设计模式,如果程序执行错误,我们可以恢复restore之前的状态,就好像我们在编辑word文档,需要撤销原操作,那么我们使用ctrl+Z。
在数据库操作中,这个模式用的非常多!
说白了就是在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。
» Read more: 备忘录模式C++实现
观察者模式C++实现
June 10th, 2014观察者模式是非常重要的一个模式,初次遇到该模式,想了很久没有想通应该怎么做。
其实原理很简单:就是当被观察者(Observable)发生变化,然后就会某种数据方式通知(Notify)观察者(Observer),Notify的方式很多,比如我们将Observer 放到一个list或者set中,分别调用Observer的update()这样实现通知。
» Read more: 观察者模式C++实现