策略模式
public class Run {
public interface IStractgy {
public void doCmd();
}
public class A implements IStractgy {
public void doCmd() {
// TODO Auto-generated method stub
}
}
public class B implements IStractgy {
public void doCmd() {
// TODO Auto-generated method stub
}
}
public class C implements IStractgy {
public void doCmd() {
// TODO Auto-generated method stub
}
}
public class Invoker {
private IStractgy stractgy;
public void setStractgy(IStractgy stractgy){
this.stractgy = stractgy;
}
public void execute(){
this.stractgy.doCmd();
}
}
public static void main(String[] args) {
Run run = new Run();
IStractgy a = run.new A();
IStractgy b = run.new B();
IStractgy c = run.new C();
Invoker invoker = run.new Invoker();
invoker.setStractgy(a);
invoker.execute();
invoker.setStractgy(b);
invoker.execute();
invoker.setStractgy(c);
invoker.execute();
}
}
装饰模式
public class Run {
public abstract class IView{
public abstract void getInfo();
}
public class AView extends IView{
@Override
public void getInfo() {
// TODO Auto-generated method stub
}
}
public class Decorator extends IView{
private IView view;
private Decorator(IView view){
this.view = view;
}
@Override
public void getInfo() {
// TODO Auto-generated method stub
this.view.getInfo();
}
}
public class ADecorator extends Decorator{
private ADecorator(IView view){
super(view);
}
public void getDecoratorInfo(){
}
@Override
public void getInfo() {
// TODO Auto-generated method stub
this.getDecoratorInfo();
super.getInfo();
}
}
public static void main(String[] args) {
Run run = new Run();
IView view = run.new AView();
view = run.new Decorator(view);
view.getInfo();
}
}
责任链模式:
命令模式:
public class Run {
public enum Type{
A,B,C
}
public class Request{
Type type ;
public void setType(Type type){
this.type = type;
}
public Type getType(){
return this.type;
}
}
public abstract class Handler{
Type type ;
private Handler next;
Handler(Type type){
this.type = type;
}
public void setNext(Handler next){
this.next = next;
}
public void handleRequest(Request request){
if(request.getType()==this.type){
//
}else if(this.next!=null){
this.next.handleRequest(request);
}else{
//
}
}
}
public class A extends Handler{
A(Type type) {
super(type);
// TODO Auto-generated constructor stub
}
}
public class B extends Handler{
B(Type type) {
super(type);
// TODO Auto-generated constructor stub
}
}
public class C extends Handler{
C(Type type) {
super(type);
// TODO Auto-generated constructor stub
}
}
public static void main(String[] args) {
Run run = new Run();
A a = run.new A(Type.A);
B b = run.new B(Type.B);
C c = run.new C(Type.C);
a.setNext(b);
b.setNext(c);
Request r1 = run.new Request();
r1.setType(Type.A);
a.handleRequest(r1);
r1.setType(Type.B);
a.handleRequest(r1);
r1.setType(Type.C);
a.handleRequest(r1);
}
}
public class Run {
public abstract class AbstractGroup{
public abstract void find();
public abstract void change();
public abstract void delete();
public abstract void confim();
}
public class GroupA extends AbstractGroup{
@Override
public void find() {
// TODO Auto-generated method stub
}
@Override
public void change() {
// TODO Auto-generated method stub
}
@Override
public void delete() {
// TODO Auto-generated method stub
}
@Override
public void confim() {
// TODO Auto-generated method stub
}
}
public class GroupB extends AbstractGroup{
@Override
public void find() {
// TODO Auto-generated method stub
}
@Override
public void change() {
// TODO Auto-generated method stub
}
@Override
public void delete() {
// TODO Auto-generated method stub
}
@Override
public void confim() {
// TODO Auto-generated method stub
}
}
public class GroupC extends AbstractGroup{
@Override
public void find() {
// TODO Auto-generated method stub
}
@Override
public void change() {
// TODO Auto-generated method stub
}
@Override
public void delete() {
// TODO Auto-generated method stub
}
@Override
public void confim() {
// TODO Auto-generated method stub
}
}
public abstract class AbastractCmd{
protected GroupA a = new GroupA();
protected GroupB b =new GroupB();
protected GroupC c = new GroupC();
public abstract void doCmd();
}
public class ChangeCmd extends AbastractCmd{
@Override
public void doCmd() {
// TODO Auto-generated method stub
a.find();
b.change();
c.confim();
}
}
public class DeleteCmd extends AbastractCmd{
@Override
public void doCmd() {
// TODO Auto-generated method stub
a.find();
b.delete();
c.confim();
}
}
public class Invoker{
AbastractCmd cmd;
public void execute(AbastractCmd cmd){
cmd.doCmd();
}
}
public static void main(String[] args) {
Run run = new Run();
Invoker invoker = run.new Invoker();
ChangeCmd change = run.new ChangeCmd();
invoker.execute(change);
DeleteCmd delete = run.new DeleteCmd();
invoker.execute(delete);
}
}
中介者模式:多方关系 解耦
public class Run {
public interface IDo {
public void doA();
public void doB();
public void doC();
}
public abstract class AbstractMediator {
public abstract void execute(int group, int cmd);
}
public abstract class AbstractPerson {
public AbstractMediator mediator;
public AbstractPerson(AbstractMediator mediator) {
this.mediator = mediator;
}
}
public class A extends AbstractPerson {
public A(AbstractMediator mediator) {
super(mediator);
// TODO Auto-generated constructor stub
}
public void doA(int cmd) {
mediator.execute(0, cmd);
}
public void refluse() {
// TODO Auto-generated method stub
}
}
public class B extends AbstractPerson {
public B(AbstractMediator mediator) {
super(mediator);
// TODO Auto-generated constructor stub
}
public void doB(int cmd) {
mediator.execute(1, cmd);
}
public void increase() {
// TODO Auto-generated method stub
}
public int getCount() {
// TODO Auto-generated method stub
return 10;
}
public void decrease() {
// TODO Auto-generated method stub
}
}
public class C extends AbstractPerson {
public int getState;
public C(AbstractMediator mediator) {
super(mediator);
// TODO Auto-generated constructor stub
}
public void doC(int cmd) {
mediator.execute(2, cmd);
}
public void off() {
// TODO Auto-generated method stub
}
}
public class Mediator extends AbstractMediator implements IDo {
private A a;
private B b;
private C c;
public Mediator() {
a = new A(this);
b = new B(this);
c = new C(this);
}
@Override
public void execute(int group, int cmd) {
// TODO Auto-generated method stub
switch (group) {
case 0:
doA();
break;
case 1:
doB();
break;
case 2:
doC();
break;
default:
break;
}
}
public void doA() {
// TODO Auto-generated method stub
if(c.getState==1){
b.increase();
}else{
}
}
public void doB() {
// TODO Auto-generated method stub
if(b.getCount()>0){
b.decrease();
}
}
public void doC() {
// TODO Auto-generated method stub
a.refluse();
c.off();
}
}
public static void main(String[] args) {
Run run = new Run();
Mediator mediator =run.new Mediator();
A a = run.new A(mediator);
a.doA(1);
C c = run.new C(mediator);
c.doC(1);
B b = run.new B(mediator);
b.doB(10);
}
}