摘要:这个代理模式我觉得跟装饰模式差不多。具体先来看简单的代码吧。先声明一个抽象类:[代码]再定义一个继承了该类的RealSubject类:[代码]该类重写了Request方法,实现了真实的请求。最后定义一个继承了Subject的代理类Proxy:Proxy 代码在代理类重写的Request方法中,调用了RealSubject类中的Request方法。然后看一下简单的客户端代码:[代码]这个客户端中实例...
阅读全文
摘要:看完装饰模式以后,觉得作者在提装饰模式之前,先把面向对象的几个原则介绍了一遍,尤其是封闭-开放原则,是很有道理的,我觉的这个装饰模式就是封闭-开放原则的一个实现例子,要添加新功能,可以,但是不修改原有的类,而是新添一个类来包装。来看代码,先定义一个抽象类,这个类就是封闭-开放原则中说的,把一些可能要扩展的功能抽象出来:[代码]在这个基类基础上,派生出具体的对象类:ConcreteComponent...
阅读全文
摘要:单一职责原则: 就一个类而言,应该仅有一个引起它变化的原因。 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当发生变化时,设计会遭受到意想不到的破坏。开放-封闭原则: 软件实体应该可以扩展,但是不可修改。 也就是说对于扩展是开放的,对于更改时封闭的,这样的设计才能面对需求的改变却可以保持相对稳定,从...
阅读全文
摘要:先定义一个抽象方法类Strategy:抽象算法类代码这个类中定义了一个抽象方法让子类重写具体的策略逻辑。再定义三个具体算法类:具体算法代码三个具体算法类都对基类的抽象方法进行重写,实现了各自策略对应的处理逻辑。写一个实现具体算法的类Context:Context代码Context类中,ContextInterface方法的strategy对象是根据构造方法中传入的具体策略对象调用方法的。和简单工厂...
阅读全文
摘要:首先定义一个父类BaseClass:BaseClass代码然后写两个子类SubClass和SubClassT:SubClass代码SubClassT代码注意父类中有一个虚方法:[代码]子类中对其进行了重写:重写基类的虚方法代码然后写一个工厂类Factory:Factory代码这里注意,用父类声明,但是用子类实例化,然后返回一个父类,这个就是多态。工厂模式其实就是多态的一个应用。Program如下:...
阅读全文