随笔分类 -  设计模式

摘要:No1: 原型模式使用场景: 1)类初始化需要消耗非常多的资源,这个资源包括数据、硬件资源等,通过原型复制避免这些消耗 2)通过new产生一个对象需要非常繁琐的数据准备货访问权限,这是可以使用原型模式 3)一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式复制多 阅读全文
posted @ 2017-10-31 11:16 嘉禾世兴 阅读(1142) 评论(0) 推荐(0) 编辑
摘要:No1: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 No2: 在Android源码中,最常用到的Builder模式就是AlertDialog.Builder No3: WindowManager在java层的具体实现是WindowManagerImpl,Window对 阅读全文
posted @ 2017-10-30 17:25 嘉禾世兴 阅读(345) 评论(0) 推荐(0) 编辑
摘要:No1: 懒汉单例模式优缺点分析 优点:单例只有在使用时才会被实例化,在一定程度上节约了资源 缺点:第一次加载时需要及时进行实例化,反应稍慢,最大的问题是每次调用getInstance都进行同步,造成不必要的同步开销。 所以这种模式一般不建议使用 No2: Double Check Lock(DCL 阅读全文
posted @ 2017-10-30 15:26 嘉禾世兴 阅读(267) 评论(0) 推荐(0) 编辑
摘要:1.单一职责原则 Single Respoonsibility Principle(SRP) --封装 2.开闭原则 Open Close Principle(OCP)--对扩展开放,对修改封闭 3.里式替换原则 Liskov Substitution Principle(LSP)--所有引用基类的 阅读全文
posted @ 2017-10-30 11:02 嘉禾世兴 阅读(267) 评论(0) 推荐(0) 编辑
摘要:题目:建造两个产品,这两个产品都有两个部件 打印结果: 其实,Action类中 director.construct(b1); 实际调用的就是 b1.buildPartA(); b1.buildPartB(); Director是建造的指挥者,通过父类调用子类实际的操作。 阅读全文
posted @ 2017-08-25 16:34 嘉禾世兴 阅读(170) 评论(0) 推荐(0) 编辑
摘要:题目:通过购买基金来购买股票A、B、C 打印结果: 其实很简单,就是将StockA、StockB、StockC封装起来,我们只要调用Fund的API就可以了 阅读全文
posted @ 2017-08-25 15:42 嘉禾世兴 阅读(122) 评论(0) 推荐(0) 编辑
摘要:题目:相同的两份试卷,甲乙两个人做,答案不同 打印结果: 这其实就是通过面向对象的三大特性实现代码的复用,使重复代码降到最低 阅读全文
posted @ 2017-08-24 17:21 嘉禾世兴 阅读(162) 评论(0) 推荐(0) 编辑
摘要:题目:编写简历,复制三份,做相应的修改 以下为深层复制 打印结果 一般在初始化的信息不发生改变的情况下,克隆是最好的方法。这既隐藏了对象创建的细节,又对性能是大大的提高。 阅读全文
posted @ 2017-08-24 16:43 嘉禾世兴 阅读(108) 评论(0) 推荐(0) 编辑
摘要:题目:大学生和志愿者学雷锋,轮流去给孤寡老人送爱心 工厂类和方法类都要分别继承,工厂类用于生成新的对象。如果再加一个警察类,只需要下面这样做就可以了: 不需要动服务端,只需要在客户端Test中增加new PoliceFactory()就可以了 工厂方法模式和简单工厂模式的区别: 简单工厂模式只有一个 阅读全文
posted @ 2017-08-24 16:02 嘉禾世兴 阅读(116) 评论(0) 推荐(0) 编辑
摘要:题目:一个男孩让另一个男孩代理去送一个女孩礼物 打印结果: 原理就是: 1.Pursuit和Proxy都实现了GiveGift接口,但Proxy中实际调用的也是Pursuit的方法 2.Proxy的构造函数也是为了生成Pursuit的对象 3.所以在Action中,我们只看到了Proxy在忙来忙去, 阅读全文
posted @ 2017-08-24 15:02 嘉禾世兴 阅读(157) 评论(0) 推荐(0) 编辑
摘要:题目:给一个人“小王”搭配衣服和裤子 特别注意这段 一层套一层,代表功能的拓展 装饰者模式是利用setComponent进行包装的 另外,如果只有一个ConcreteComponent类而没有抽象的Component类,那Decorator类可以是ConcreteComponent的一个子类。 如果 阅读全文
posted @ 2017-08-22 17:51 嘉禾世兴 阅读(243) 评论(0) 推荐(0) 编辑
摘要:题目:商场做活动,有三种:正常收费、满300返100、打8折 效果图: 下面是策略和工厂结合 布局 arrays.xml ContextStrategy是策略类,它创建对象且调用策略,判断条件不要写在StartegyActivity(客户端) 简单工厂模式和策略模式的区别: 简单工厂模式通过多态能得 阅读全文
posted @ 2017-08-21 17:44 嘉禾世兴 阅读(218) 评论(0) 推荐(0) 编辑
摘要:类图分三层: 第一层:类的名称,如果是抽象类,就用斜体显示 第二层:类的特性,通常是字段和属性 第三层:类的操作,通常是方法或行为 接口图:第一行是接口名称,第二行是接口方法 继承:用空心三角形+实线 实现:用空心三角形+虚线 关联:用实线+箭头 聚合:用空心的菱形+实线箭头(包含但不是其中一部分) 阅读全文
posted @ 2017-08-21 15:03 嘉禾世兴 阅读(451) 评论(0) 推荐(0) 编辑
摘要:题目:用java实现一个简单的计算器功能(用户从控制台输入)计算两个数和一个运算符号 Optioner是父类,根据情况不同,通过OptionerFactory工厂得到对应的实际操作类 Optioner封装了两个参数和操作符,加减乘除类继承了Optioner,OptionerFactory中多态得到了 阅读全文
posted @ 2017-08-21 14:47 嘉禾世兴 阅读(179) 评论(0) 推荐(0) 编辑
摘要:传输对象模式(Transfer Object Pattern)用于从客户端向服务器一次性传递带有多个属性的数据。传输对象也被称为数值对象。传输对象是一个具有 getter/setter 方法的简单的 POJO 类,它是可序列化的,所以它可以通过网络传输。它没有任何的行为。服务器端的业务类通常从数据库 阅读全文
posted @ 2016-06-23 21:56 嘉禾世兴 阅读(574) 评论(0) 推荐(0) 编辑
摘要:服务定位器模式(Service Locator Pattern)用在我们想使用 JNDI 查询定位各种服务的时候。考虑到为某个服务查找 JNDI 的代价很高,服务定位器模式充分利用了缓存技术。在首次请求某个服务时,服务定位器在 JNDI 中查找服务,并缓存该服务对象。当再次请求相同的服务时,服务定位 阅读全文
posted @ 2016-06-23 21:38 嘉禾世兴 阅读(278) 评论(0) 推荐(0) 编辑
摘要:拦截过滤器模式(Intercepting Filter Pattern)用于对应用程序的请求或响应做一些预处理/后处理。定义过滤器,并在把请求传给实际目标应用程序之前应用在请求上。过滤器可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序。以下是这种设计模式的实体。 过滤器(Fil 阅读全文
posted @ 2016-06-23 20:25 嘉禾世兴 阅读(538) 评论(0) 推荐(0) 编辑
摘要:前端控制器模式(Front Controller Pattern)是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理。该处理程序可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序。以下是这种设计模式的实体。 前端控制器(Front Controller) - 阅读全文
posted @ 2016-06-23 19:53 嘉禾世兴 阅读(661) 评论(0) 推荐(0) 编辑
摘要:数据访问对象模式(Data Access Object Pattern)或 DAO 模式用于把低级的数据访问 API 或操作从高级的业务服务中分离出来。以下是数据访问对象模式的参与者。 数据访问对象接口(Data Access Object Interface) - 该接口定义了在一个模型对象上要执 阅读全文
posted @ 2016-06-23 19:35 嘉禾世兴 阅读(382) 评论(0) 推荐(0) 编辑
摘要:组合实体模式(Composite Entity Pattern)用在 EJB 持久化机制中。一个组合实体是一个 EJB 实体 bean,代表了对象的图解。当更新一个组合实体时,内部依赖对象 beans 会自动更新,因为它们是由 EJB 实体 bean 管理的。以下是组合实体 bean 的参与者。 组 阅读全文
posted @ 2016-06-23 19:12 嘉禾世兴 阅读(247) 评论(0) 推荐(0) 编辑

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