您的位置:首页 > 编程语言 > Java开发

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());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: