随笔分类 -  设计模式

摘要:应用场景: 安全代理:控制对原对象的访问权限 注: 之所以把权限控制放在"代理类"中,而不是放在原对象中,主要依据"单一性原则". 远程代理:网络通讯时,将加密,解密,打包,解包这些操作一起封装在"代理对象"使得客户端 调用时,就像是在访问本地数据. eg: WebService的工作原理 虚拟代理:当存在实例化需要很长时间的成员对象时,当需要调用到与该对象相关的方法时才 声明该对象,并实例化. 智能指引:未使用过基本特点: 代理拥有实际执行者的实例,代理的每一个函数,直接调用实际执行者对应的函数.一、普通代理: (安全代理) 1.原 阅读全文
posted @ 2011-12-30 16:56 edisonfeng 阅读(542) 评论(1) 推荐(0)
摘要:应用场景: 将构建一个复杂产品的过程进行分解: 1)每个部件的创建:专注于每个部件自身的创建 2)整体产品的创建:将创建好的各个部件传递给产品类 一个复杂的产品对象由若干个部件对象装配而成,由此可使整个复杂构建过程的逻辑更加清晰,可读性更强一、组成结构 组成: 抽象建造者 具体建造者 指挥者 产品类 产品类:public class HouseProduct { private int area; private int roomCount; private String color; public HouseProduct(int area,... 阅读全文
posted @ 2011-12-29 01:29 edisonfeng 阅读(417) 评论(0) 推荐(0)
摘要:应用场景:图形用户界面中,各个控件构成树状拓扑结构.在做消息机制时,子控件无 法处理的消息,就继续传递给父控件来处理.特点: a)责任链模式并不指定链的拓扑结构,可以是单链表,二叉树,环 b)链接顺序由系统任意指定,甚至可以进行动态变化一、组成结构 请求者类: public class Request {//请求者类,用flag标识 private int levelFlag; public Request(int levelFlag) { this.levelFlag=levelFlag; } public int getLevelFlag... 阅读全文
posted @ 2011-12-27 01:55 edisonfeng 阅读(1421) 评论(2) 推荐(0)
摘要:应用场景: 某个类型具有两个或多个维度,实现抽象与行为的分离,防止"行为代码模块"冗余.一、基本结构 组成: 行为接口: 1个,定义了通用的行为方法 具体行为类: 多个,具体实现行为接口中指定的行为方法 抽象类: 1个,定义了通用的行为方法,供外部调用,通常方法名与"行为接口"中的方法名相同. 抽象类具体实现: 若干个,通过其中一个维度,具体定义抽象类 行为接口:public interface Engine {//行为接口 public void setEngine();} 具体行为类一:public class Engine1500CC implem 阅读全文
posted @ 2011-12-26 16:25 edisonfeng 阅读(446) 评论(0) 推荐(0)
摘要:一、基本结构 组成: a)策略接口:1个 b)具体策略类:多个,封装了具体的算法和行为 c)调度类: 1个,持有某具体策略类的引用,供客户端使用 策略接口://策略接口,定义了不同策略供外部调用的“通用方法”public interface StrategyInterface { public void multiWay_tour();} 具体策略类一:public class FirstConcreteStrategy implements StrategyInterface { public void multiWay_tour() {//策略方法的具体实现 ... 阅读全文
posted @ 2011-12-25 16:35 edisonfeng 阅读(478) 评论(0) 推荐(0)
摘要:一、基本结构1.层次一:原始抽象类 抽象类:Cakeabstract class Cake { protected String description="Unknown Cake"; public abstract void printDescription();//抽象方法必须指定为abstract类型 }2.层次二:具体实现者、装饰者抽象类 具体实现者1:WhiteCakepublic class WhiteCake extends Cake { public WhiteCake() { description="WhiteCake"; } ... 阅读全文
posted @ 2011-12-25 02:15 edisonfeng 阅读(560) 评论(0) 推荐(1)
摘要:使用场景: 接口转换一、对象适配器(优先选用)优选的原因:多用聚合,少用继承原始接口类:public class Adaptee { public void standardRequest(){ System.out.println("这是原始标准接口!"); }}目标接口:public interface Target { public void newRequest(); }适配器类://聚合的方式,适配器类中“原始接口对象”作为其成员对象public class Adapter implements Target ... 阅读全文
posted @ 2011-12-20 01:28 edisonfeng 阅读(589) 评论(0) 推荐(0)
摘要:一、定义观察者类1)观察者DiningObserverpublic class DiningObserver implements Observer { //只需要实现Observer接口中的update方法 public void update(Observable o, Object arg) { if(arg.equals("Dining") ){ System.out.println("我是观察者DiningObserver,当前被观察者的状态为:Dining!"); }else{ System.out.print... 阅读全文
posted @ 2011-12-15 16:41 edisonfeng 阅读(392) 评论(0) 推荐(0)
摘要:一、基本特点 如何防止创建多个实例:构造方法设置为私有,使得外部无法直接new出实例 基本组成:a)一个静态的和自身类型相同的成员对象 b)私有的构造方法 c)获取实例的公有方法,供外部调用,以返回实例 二、懒汉式特点:类被加载时不创建实例,getInstance方法第一次被调用时才创建实例类代码:public class LazySingleton { /** * 静态的和自身类型相同的成员对象 */ private static LazySingleton theLazySingleton=null; /** * 构... 阅读全文
posted @ 2011-10-22 18:11 edisonfeng 阅读(545) 评论(0) 推荐(0)
摘要:一、简单工厂模式的组成部分 a)抽象产品: 在接口中指定了每种具体产品需要实现的方法 具体产品: 实现接口 b)工厂类:根据具体的参数,创建和返回相应的具体产品,由主程序直接调用二、代码实现抽象产品:Carpackage com.simpleFactory;public interface Car { public void run();}具体产品1:BENZpackage com.simpleFactory;public class BENZ implements Car { public void run() { // TODO Auto-generat... 阅读全文
posted @ 2011-10-19 23:56 edisonfeng 阅读(383) 评论(0) 推荐(1)
摘要:一、定义观察者类 a)观察者基类enum ObservedStatus {Dining, Sleeping, Working};/*******************************定义多个观察者类*************************************///定义观察者的父类(抽象类,实际作用相当于java中的接口)class Observer{ public: virtual void update(ObservedStatus status)=0; virtual ~Observer() {}//保证父类指针指向子类时,delete基类指针,子类的析构行... 阅读全文
posted @ 2011-09-06 16:58 edisonfeng 阅读(478) 评论(0) 推荐(0)
摘要:一、 基本特点: a)根据不同的情况,创建不同的对象 b)每个对象方法名相同,方法的实现差别很大二、组成: a)抽象策略: 1个 b)具体策略 多个,封装了相关的算法和行为 c)调度类: 持有一个具体策略类的引用,供客户端使用三、代码实现:#include<iostream>using namespace std;/*************************************策略基类****************************************/ class StrategyBase//主要定义了虚函数 { public: virtu... 阅读全文
posted @ 2011-09-05 17:26 edisonfeng 阅读(3738) 评论(0) 推荐(0)