单例设计模式
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());
}
}