1.2Tinking In Java——多态与设计模式

来源:互联网 发布:截图编辑软件 绿色版 编辑:程序博客网 时间:2024/05/03 12:27

单例设计模式

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());}}


原创粉丝点击