![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
攀岩者
这个作者很懒,什么都没留下…
展开
-
单例模式
package com.test.design.singleton;public class Singleton { private static Singleton instance = new Singleton(); private Singleton(){ } public synchronized static Singleton getI转载 2013-01-15 15:24:02 · 160 阅读 · 0 评论 -
原型模式
这个模式的核心是一个clone 方法,通过这个方法进行对象的拷贝,Java 提供了一个Cloneable 接口来标示这个对象是可拷贝的,为什么说是“标示”呢?翻开JDK 的帮助看看Cloneable 是一个方法都没有的,这个接口只是一个标记作用,在JVM 中具有这个标记的对象才有可能被拷贝,那怎么才能从“有可能被拷贝”转换为“可以被拷贝”呢?方法是覆盖clone()方法(Object类的方法)。转载 2013-02-19 09:15:35 · 288 阅读 · 0 评论 -
设计原则
一、单一职责原则:应该有且仅有一个原因引起类的变更。该原则的好处为:1.类的复杂性降低,实现什么职责都有清晰明确的定义;2.可读性提高,复杂性降低,那当然可读性提高了;3.可维护性提高,可读性提高,那当然更容易维护了;4.变更引起的风险降低,变更是必不可少的,接口的单一职责做的好的话,一个接口修改只对相应的实现类有影响,与其他的接口无影响,这个是对项目有非常大的帮助。对于接转载 2013-02-19 16:06:45 · 302 阅读 · 0 评论 -
享元模式
该模式的核心就是创建对象池,通过对象的外部状态来标示某个对象,每次使用时都从对象池中去获取。转载 2013-02-19 09:58:59 · 213 阅读 · 0 评论 -
组合模式
组合模式的几个角色:抽象构件角色(Component):定义参加组合的对象的共有方法和属性,可以定义一些默认的行为或属性;比如我们例子中的getInfo 就封装到了抽象类中。叶子构件(Leaf):叶子对象,其下再也没有其他的分支。树枝构件(Composite):树枝对象,它的作用是组合树枝节点和叶子节点;组合模式有两种模式,透明模式和安全模式。透明模式:转载 2013-01-22 10:13:55 · 318 阅读 · 0 评论 -
工厂模式
package com.test.design.factory;public interface IWork { public void howToDo(); public void doing();}package com.test.design.factory;public class Farmer implements IWork { @转载 2013-01-15 16:15:51 · 217 阅读 · 0 评论 -
访问者模式
package com.test.design.visitor;public abstract class Employee { private String name; private int salary; private String hoby; public String getName() { return name; } public void转载 2013-01-25 10:45:35 · 217 阅读 · 0 评论 -
模板模式
package com.test.design.template;public abstract class CarModel { //protected 对外不用暴露那么多方法 protected abstract void start(); protected abstract void stop(); protected abstract void e转载 2013-01-16 15:32:59 · 237 阅读 · 0 评论 -
策略模式
策略接口:package com.test.design.stategy;public interface IStrategy { //各种策略 public void operate();}各种策略:package com.test.design.stategy;public class First implements IStrategy {转载 2013-01-15 14:08:47 · 157 阅读 · 0 评论 -
门面模式
package com.test.design.facade;public interface ILetterProcess { public void writeContext(String context); public void fillEnvelope(String address); public void sendLetter();}转载 2013-01-16 09:09:14 · 241 阅读 · 0 评论 -
代理模式
package com.test.design.proxy;//代理接口,包含了被代理类所能处理的事情public interface IProxy { public void doWork(); public void doHappy();}package com.test.design.proxy;//代理类 (同被代理类实现同一接口,这样就知道了转载 2013-01-15 15:13:50 · 218 阅读 · 0 评论 -
责任链模式
package com.test.design.chain;public abstract class Handler { private int type = 0; private Handler next; public Handler(int type){ this.type = type; } public void setNext(Han转载 2013-01-25 10:06:52 · 206 阅读 · 0 评论 -
装饰模式
package com.test.design.decorator;public abstract class Component { public abstract void operate();} package com.test.design.decorator;public class BaseComponent extends Componen转载 2013-01-17 15:36:50 · 223 阅读 · 0 评论 -
桥梁模式
package com.test.design.bridge;public abstract class Task { //任务需求 public abstract void requirement(); //任务进度 public abstract void progress();}package com.test.design.bridge;转载 2013-01-17 14:41:25 · 197 阅读 · 0 评论 -
建造者模式
package com.test.design.builder;import java.util.ArrayList;public abstract class CarModel { private ArrayList sequence = new ArrayList(); //protected 对外不用暴露那么多方法 protected abstract转载 2013-01-16 16:43:55 · 194 阅读 · 0 评论 -
适配器模式(类适配)
package com.test.design.adapter;public interface IUserInfo { public String getUserName(); public String getMobileNumber(); public String getHomeAddress(); public String getHomeT转载 2013-01-16 10:10:44 · 242 阅读 · 0 评论 -
多例模式
package com.test.design.multition;import java.util.ArrayList;import java.util.Random;public class Multition { private static int maxNum = 2; // 多例模式中的上限 private static ArrayList multit转载 2013-01-15 15:37:23 · 196 阅读 · 0 评论 -
中介者模式
中介者模式有以下几部分组成:抽象中介者(Mediator)角色:抽象中介者角色定义统一的接口用于各同事角色之间的通信。具体中介者(Concrete Mediator)角色:具体中介者角色通过协调各同事角色实现协作行为,因此它必须依赖于各个同事角色。同事(Colleague)角色:每一个同事角色都知道中介者角色,而且与其他的同事角色通信的时候,一定要通过中介者角色协作。每个同事类的行为分转载 2013-02-19 09:37:08 · 279 阅读 · 0 评论