1.2Tinking In Java——多态与设计模式
2013-04-11 21:12
127 查看
单例设计模式
工厂设计模式
状态设计模式
package com.jingtian.xiaozhi0; public class Test0 { public static void main(String[] args) { A a=A.getA(); System.out.println(a); } } //单例设计模式(主要是对private static final的使用) class A { private A() {} private static final A a=new A(); public static A getA() { return a; } }
工厂设计模式
package com.jingtian.xiaozhi1; import java.util.*; class Test1 { public static void main(String[] args) { for(int i=0;i<10;i++) { A hello=MyUtil.getA(); hello.play(); } } } //工厂设计模式:上传型型对象————往外产出 class MyUtil { public static A getA() { Random r=new Random(); int i=r.nextInt(10); if(i/3==1) return new B(); else if(i/3==2) return new C(); else if(i/3==3) return new D(); else return new A(); } } //下面是一些继承,比如动物(狗猫)乐器(二胡萧)人(学生老师) class A { public void play(){System.out.println("A play");} } class B extends A { public void play(){ System.out.println("B play"); } } class C extends A { public void play() { System.out.println("C play"); } } class D extends A { public void play() { System.out.println("D play"); } }
状态设计模式
package com.jingtian.xiaozhi2; import java.util.*; public class Test2 { public static void main(String[] args) { for(int i=0;i<10;i++) { MyUtil myUtil =new MyUtil(); myUtil.change(); myUtil.perform(); } } } //状态模式:(修改引用,改变状态)————在内部修改 class MyUtil { public static A a=new A() ; public static void perform() { a.play(); } public static void change() { Random r=new Random(); int i=r.nextInt(10); if(i/3==1) a=new B(); else if(i/3==2) a=new C(); else if(i/3==3) a=new D(); else a=new A(); } } //下面是一些继承,比如动物(狗猫)乐器(二胡萧)人(学生老师) class A { public void play(){System.out.println("A play");} } class B extends A { public void play(){ System.out.println("B play"); } } class C extends A { public void play() { System.out.println("C play"); } } class D extends A { public void play() { System.out.println("D play"); } }策略设计模式
package com.jingtian.xiaozhi3; import java.util.*; public class Test3 { public static void main(String[] args) { for (int i = 0; i < 10; i++) { MyUtil2.process(MyUtil1.getA(), "hello pattern!"); } // A a=new A(); } } // 策略设计模式(对于同一个对象采用不同的状态)————往里送入 class MyUtil2 { public static void process(A a, String str) { a.process(str); } } //工厂设计模式:上传型型对象 class MyUtil1 { public static A getA() { Random r=new Random(); int i=r.nextInt(10); if(i/2==1) return new B(); else return new C(); } } // 下面是一些继承,比如动物(狗猫)乐器(二胡萧)人(学生老师)演员(喜剧演员,悲剧演员) abstract class A { public abstract void process(String str); } class B extends A { public void process(String str) { System.out.println(str.toUpperCase()); } } class C extends A { public void process(String str) { System.out.println(str.toLowerCase()); } }
相关文章推荐
- Java中类的继承,属性和方法的四种修饰符的作用范围,final关键字,java的三大特点中的2个:封装和多态,以及多态的一个设计模式,模板方法模式(template method)
- Java设计模式(五) 多态的极致应用——组合模式
- java编程思想复用,多态,以及设计模式-多态
- 黑马程序员—Java面向对象(抽象类、模板方法设计模式、接口、多态、内部类)
- java面向对象——多态、设计模式、代码块
- Java模式设计之多态模式与多语言支持
- 设计模式学习(一):java 面向对象特征:抽象、封装、多态、继承
- 黑马程序员_Java基础_抽象类,模板设计模式,接口,内部类,多态
- Java模式设计之多态模式与多语言支持
- 设计模式_Java多态,继承,封装
- java常用设计模式
- (四)Java设计模式--迭代器模式
- Java23种设计模式
- java设计模式之单例设计模式
- 追MM与Java的23种设计模式(转)
- 学习:java设计模式—工厂模式
- 关于java设计模式与极品飞车游戏的思考
- Java设计模式 之 命令模式
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
- 【java设计模式】之 代理(Proxy)模式