JavaSE中几种典型的设计模式,javase设计模式
分享于 点击 48222 次 点评:151
JavaSE中几种典型的设计模式,javase设计模式
这里是JavaSE中几种典型的设计模式,有如下几种:
1. 懒汉式单例—》2.饿汉式单例–》3.模板设计模式—抽象类的实际应用—》4.工厂设计模式–(第三方解耦合)接口类应用—》5.代理设计模式—(两个子类共同实现一个类)接口类应用;
1.懒汉式单例
class Single {
public static Single single = null;
private Single() {
}
public static Single getInstance() {
if (single == null) {
single = new Single();
}
return single;
}
public void print() {
System.out.println("Hello world");
}
}
public class test {
public static void main(String[] args) {
Single single = Single.getInstance();
single.print();
}
}
2.饿汉式单例
class Single {
private static Single single = new Single();
private Single() {
}
public static Single getInstance() {
return single;
}
public void print() {
System.out.println("Hello Single");
}
}
public class test {
public static void main(String[] args) {
Single single = Single.getInstance();
single.print();
}
}
3.模板设计模式—抽象类的实际应用
abstract class Action {
public static final int EAT = 1;
public static final int SLEEP = 5;
public static final int WORK = 10;
public void command(int cmd) {
switch (cmd) {
case EAT:
this.eat();
break;
case SLEEP:
this.sleep();
break;
case WORK:
this.work();
break;
case EAT + SLEEP + WORK:
this.eat();
this.work();
this.sleep();
break;
}
}
public abstract void eat();
public abstract void sleep();
public abstract void work();
}
class Person extends Action {
@Override
public void eat() {
System.out.println("人吃饭,吃喜欢的饭");
}
@Override
public void sleep() {
System.out.println("人睡觉");
}
@Override
public void work() {
System.out.println("人工作");
}
}
class Pig extends Action {
@Override
public void eat() {
System.out.println("猪吃饭,吃糠");
}
@Override
public void sleep() {
System.out.println("猪在睡觉");
}
@Override
public void work() {
// 猪不需要工作
}
}
public class test {
public static void main(String[] args) {
fun(new Person());
fun(new Pig());
}
public static void fun(Action action) {
action.command(Action.EAT + Action.SLEEP + Action.WORK);
}
}
4.工厂设计模式–(第三方解耦合)接口类应用
interface Infruit {
void eat();
}
class Factory {
public static Infruit getInstance(String value) {
if ("apple".equals(value)) {
return new Apple();
} else if ("watermelon".equals(value)) {
return new Watermelon();
}
return null;
}
}
class Apple implements Infruit {
@Override
public void eat() {
System.out.println("i am eating apple");
}
}
class Watermelon implements Infruit {
@Override
public void eat() {
System.out.println("i am eating Watermelon");
}
}
public class test {
public static void main(String[] args) {
Infruit infruit = Factory.getInstance("watermelon");
infruit.eat();
}
}
5.代理设计模式—(两个子类共同实现一个类)接口类应用
interface ISubject {
void buyComputer();
}
class RealSubject implements ISubject {
@Override
public void buyComputer() {
System.out.println("2.buy a computer");
}
}
class ProxySubject implements ISubject {
private ISubject subject;
public ProxySubject(ISubject subject) {
this.subject = subject;
}
public void producerComputer() {
System.out.println("1.produer a computer");
}
public void afterComputer() {
System.out.println("3.sale for computer");
}
@Override
public void buyComputer() {
this.producerComputer();
this.subject.buyComputer();
this.afterComputer();
}
}
class Factor {
public static ISubject getInstance() {
return new ProxySubject(new RealSubject());
}
}
public class test {
public static void main(String[] args) {
ISubject subject = Factor.getInstance();
subject.buyComputer();
}
}
相关文章
- 暂无相关文章
用户点评