09 2011 档案
摘要:
单例模式:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。
三要点:
一、单例类只能有一个实例
二、单例类必须自行创建自身实例
三、单例类自行向整个系统提供实例
类图:
应用场景:在整个系统中只需要一个类实例的全局可用类。比如License验证,内存管理等。
分析:其内部有很多需要提供全局访问的方法,对于C#中单例模式有两种创建:双检索单例、饿汉单例。
阅读全文

摘要:
五个角色:抽象产品角色(AbstractProduct)、具体产品角色(Product)、抽象工厂角色(AbstractFactory)、具体工厂角色(ConcreteFactory)、客户端(Client)
抽象产品角色(AbstractProduct):声明产品接口
具体产品角色(Product):实现产品的接口
抽象工厂角色(AbstractFactory):声明生成对应抽象产品的方法
具体工厂角色(ConcreteFactory):实现生成抽象产品方法,生成产品
客户端(Client):执行生产并运行产品
实现思路:客户端调用具体的工厂角色调用具体的产品角色。
阅读全文

摘要:
五个角色:产品角色(Product)、真实产品角色(ConcreteProduct)、工厂角色(Creator)、真实工厂角色(ConcreteCreator)、客户端(Client)
产品角色(Product):定义产品接口
真实产品角色(ConcreteProduct):实现产品的接口形成真实产品
工厂角色(Creator):声明工厂的方法并返回一个的产品
真实工厂角色(ConcreteCreator):客户端调用真实工厂返回一个真实产品
客户端(Client):运行并且得到产品
阅读全文

摘要:
四个角色:抽象策略类(Strategy)、具体策略类(ConcreteStrategy)、场景角色(Context)、客户端(Client)
抽象策略类(Strategy):接口提供动作让场景角色Context调用各种具体策略类的算法。
具体策略类(ConcreteStrategy):实现各种不同的策略算法
场景角色(Context):使用Strategy的引用实例配置场景,并且提供一个接口获取结果。
客户端(Client) :将具体策略类代入场景角色以计算出结果
阅读全文

摘要:
四个角色:抽象类(Abstraction)、扩充抽象类(RefinedAbstraction)、实现类接口(Implementor)、具体实现类(ConcreteImplementor)
抽象类(Abstraction):主控类,内部有一个实现类接口(Implementor)的对象可调用。
扩充抽象类(RefinedAbstraction):扩充抽象类,个性定制自身行为和属性继承于Abstraction。
实现类接口(Implementor):被操作类。
具体实现类(ConcreteImplementor) :继承并实现Implementor。
阅读全文

摘要:
四个角色:目标抽象类角色(Target)、目标对象角色(Adapter)、源对象角色(Adaptee)、客户端角色(Client)
目标抽象类角色(Target):定义需要实现的目标接口
目标对象角色(Adapter):调用另外一个源对象,并且转换(适配)为需要的目标对象。
源对象角色(Adaptee):因为提供的功能不能满足现状,需要转换的源对象。
客户端角色(Client):调用目标对象,对源对象进行加工。
阅读全文

摘要:
Silverlight 5 的RC版本已经出来了,本文将讲解RC版本中一个非常实用的小功能,SaveFileDialog保存文件指定默认名称和OpenFileDialog打开文件指定默认路径。本文使用 Silverlight实用窍门系列:50.InkPresenter涂鸦板的基本使用,以及将效果保存为Png图片的源码实例。
一、SaveFileDialog保存文件指定默认名称
在SaveFileDialog类中新增了一个属性DefaultFileName即可指定想要保存的文件的默认名称。下面请看代码如下:
阅读全文

摘要:
四个角色:部件抽象接口角色(Component)、叶角色(Leaf)、组合类角色(Composite)、客户端角色(Client)
部件抽象接口角色(Component):定义组合类对象的公共行为、属性和管理子部件的方法接口。
叶角色(Leaf):实现Component的公共行为,但是无法管理子部件,为最终叶节点。
组合类角色(Composite):实现Component的公共行为,可以管理子节点(增、删、查)。
客户端角色(Client):通过Component控制整棵组合对象树。
阅读全文
