GOF23种设计模式
java_zhangwei
一名java初学者~
展开
-
单例模式
一、核心作用保证一个类只有一个实例,并且提供一个访问该实例,并且提供一个访问该实例的全局访问二、常见的应用场景三、常见的五种单例模式模式实现方式-主要饿汉式(线程安全,调用效率高,但是不能延时加载)懒汉式(线程安全,调用效率不高,可以延时加载)-其他双重检测锁式(由于JVM底层内部模型的原因,偶尔会出问题,不建议使用)静态内部式(线程安全原创 2017-08-21 19:39:30 · 323 阅读 · 0 评论 -
迭代器模式
package iterator;/*** * * 自定义迭代器接口 * @author zw * */public interface MyIterator { void first(); void next(); boolean hasNext(); boolean isFirst(); Object getObj();}package ite原创 2017-08-29 20:56:47 · 226 阅读 · 0 评论 -
中介者模式
package mediator;public interface Mediator { void register(String dname,Department d); void conmand(String dname);}package mediator;//同事类的接口public interface Department { void selfAction原创 2017-08-30 15:54:52 · 533 阅读 · 0 评论 -
命令模式
package Command;/*** * 真正命令的执行者 * @author zw * */public class Receiver { public void action() { System.out.println("执行动作"); }}package Command;public interface Command { void e原创 2017-08-30 16:30:13 · 220 阅读 · 0 评论 -
策略模式
package strategy;public interface Strategy { public double getPrice(double price);}package strategy;/*** * 负责和具体的策略类交互 * 具体的算法和客户端分离 * 使得算法可以独立于客户端独立的变化 * @author zw * */public class C原创 2017-08-30 17:12:03 · 248 阅读 · 0 评论 -
模板方法模式
package templateMethod;/*** * 模拟银行取款 * @author zw * */public abstract class BankTemplateMethod { public void takeNumber() { System.out.println("取号排队"); } public abstract void transact();原创 2017-08-31 20:16:08 · 247 阅读 · 0 评论 -
状态模式
package state;/*** * 房间对象 * 持有不同对象 * @author zw * */public class Context { private State state; public void setState(State state) { System.out.println("修改状态"); this.state = state; sta原创 2017-08-31 20:41:49 · 256 阅读 · 0 评论 -
观察者模式
package observer;public interface Observer { void update(Subject subject);}class ObserverA implements Observer{ private int mystate;//保持和目标者状态一致 @Override public void update(Subject subjec原创 2017-08-31 21:49:16 · 268 阅读 · 0 评论 -
备忘录模式
package memento;/*** * 源发器 * @author zw * */public class Emp { private String name; private int age; private double salary; //进行备忘录操作,并且返回备忘录对象 public EmpMemento memento() { return new原创 2017-09-03 14:23:44 · 285 阅读 · 0 评论 -
责任链模式
package ChainOfResponsibility;/*** * 封装请假基本信息 * * @author zw * */public class LeaveRequest { private String empName; private int leaveDays; private String reason; public String getEmpName(原创 2017-08-29 20:13:32 · 248 阅读 · 0 评论 -
外观模式
package facade;public interface 银行 { void card();}class jiaotong implements 银行{ @Override public void card() { System.out.println("办理企业银行账户"); } }package facade;public interface原创 2017-08-26 12:07:16 · 352 阅读 · 0 评论 -
享元模式
package flyweight;/*** * 享元类 * @author zw * */public interface ChessFlyWeight { void setColor(String color); String getColor(); void display(Coordinate c);}class ConcreteChess implements原创 2017-08-26 12:12:52 · 228 阅读 · 0 评论 -
装饰模式
package decorator;/*** * 抽象接口 * @author zw * */public interface ICar { void move(); }/***真实对象 */class Car implements ICar{ @Override public void move() { System.out.println("陆地上跑")原创 2017-08-24 21:18:40 · 256 阅读 · 0 评论 -
工厂模式
一、工厂模式要点-简单工厂模式(静态工厂模式)虽然某种程度不符合设计原则,但实际使用最多。-工厂方法模式不修改已有类的前提下,通过增加新的工厂类实现扩展。-抽象工厂模式不可以增加产品,可以增加产品族!二、应用场景三、简单工厂模式代码package Factory.SimpleFactory;public interface Cars原创 2017-08-22 12:18:30 · 330 阅读 · 0 评论 -
建造者模式
建造者模式的本质:-分离了对象子组件的的单独构造(由Builder来负责)和装配(由Director负责)。从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况下使用。-由于事先了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。也就是实现了构建算法,装配算法的解耦。实现了更好的复用原创 2017-08-22 15:23:12 · 302 阅读 · 0 评论 -
原型模式
package Prototype;import java.io.Serializable;import java.util.Date;/*** * 原型模式 * @author zw * */public class Sheep1 implements Cloneable,Serializable{ private String name; private Date bi原创 2017-08-22 15:28:05 · 229 阅读 · 0 评论 -
桥接模式
桥接模式的核心要点:处理多层继承结构,处理多维度变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象成建立关联package bridge;/*** * 品牌 * * @author zw * */public interface Brand { void sale();}class Len原创 2017-08-22 16:23:49 · 230 阅读 · 0 评论 -
组合模式
package composite;/*** * 抽象组件 * @author zw * */public interface Component { void operation();}/*** * 叶子组件 * @author zw * */interface Lef extends Component{ }/** * 容器组件 * @author zw原创 2017-08-22 17:50:11 · 253 阅读 · 0 评论 -
代理模式
静态代理package Proxy.staticProxy;public interface Star { void confer(); void signContract(); void changGe(); }package Proxy.staticProxy;public class RealStar implements Star{ @Override p原创 2017-08-22 17:55:59 · 251 阅读 · 0 评论 -
适配器模式
package Adapter;public interface Target { void req();}package Adapter;/*** * 被适配的对象。。相当于键盘 * @author zw * */public class Adaptee { public void request() { System.out.println("可以完原创 2017-08-22 18:01:04 · 234 阅读 · 0 评论 -
GOF23种模式
一、创建型模式1.Singleton(单例模式)2.Factory(工厂模式)3.Abstract Factory(抽象工厂模式)4.Builder(建造者模式)5.Prototype(原型模式)二丶结构性模式6. Adapter Class/Object(适配器)7. Bridge(桥接)8. Composite(组合)9. Decorator(装原创 2017-08-21 19:05:00 · 243 阅读 · 0 评论