设计模式
唐光明吧
全部回复
仅看楼主
level 5
Xeon丶流光 楼主
4.4.2简单工厂模式实例之权限管理
public abstract class User
{
public void sameOperation()
{
System.out.println("修改个人资料!");
}
public abstract void diffOperation();
}
------------------------------------------
public class Employee extends User
{
public Employee()
{
System.out.println("创建员工对象!");
}
public void diffOperation()
{
System.out.println("员工拥有创建假条权限!");
}
}
--------------------------------------------------
public class Manager extends User
{
public Manager()
{
System.out.println("创建经理对象!");
}
public void diffOperation()
{
System.out.println("经理拥有创建和审批假条的权限!");
}
}
-----------------------------------------------------
public class Administrator extends User
{
public Administrator()
{
System.out.println("创建管理员对象!");
}
public void diffOperation()
{
System.out.println("管理员拥有创建和管理假条的权限!");
}
}
------------------------------------------------------
public class UserFactory
{
public static User getUser(int permission)
{
if(0==permission)
{
return new Employee();
}
else if(1==permission)
{
return new Manager();
}
else if(2==permission)
{
return new Administrator();
}
else
{
return null;
}
}
}
------------------------------------------
public class UserDao
{
public int findPermission(String userName,String userPassword)
{
if("zhangsan"==userName&&"123456"==userPassword)
{
return 0;
}
else
{
return -1;
}
}
}
---------------------------------------------------
public class Client
{
public static void main(String args[])
{
try
{
User user;
UserDao userDAO=new UserDao();
int permission=userDAO.findPermission("zhangsan","123456");
user=UserFactory.getUser(permission);
user.sameOperation();
user.diffOperation();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}}}
2016年03月16日 01点03分 1
level 5
Xeon丶流光 楼主
public interface CPU
{
public void play();
}
---------------------------------------------
public class PCCPU implements CPU
{
public void play()
{
System.out.println("PCCPU生产中。。");
}
}
----------------------------------------------------
public class MacCPU implements CPU
{
public void play()
{
System.out.println("MacCPU生产中。。");
}
}
--------------------------------------------------------
public interface RAM
{
public void play();
}
------------------------------------------------------------
public class PCRAM implements RAM
{
public void play()
{
System.out.println("PCRAM生产中。。");
}
}
-----------------------------------------------------------
public class MacRAM implements RAM
{
public void play()
{
System.out.println("MacRAM生产中。。");
}
}
----------------------------------------------------------
public interface CFactory
{
public CPU produceCPU();
public RAM produceRAM();
}
---------------------------------------------------------
public class PCFactory implements CFactory
{
public CPU produceCPU()
{
return new PCCPU();
}
public RAM produceRAM()
{
return new PCRAM();
}
}
------------------------------------------------------------
public class MacFactory implements CFactory
{
public CPU produceCPU()
{
return new MacCPU();
}
public RAM produceRAM()
{
return new MacRAM();
}
}
------------------------------------------------------------
public class Client
{
public static void main(String args[])
{
try
{
CFactory factory;
CPU cpu;
RAM ram;
factory=(CFactory)XMLUtil.getBean();
cpu=factory.produceCPU();
cpu.play();
ram=factory.produceRAM();
ram.play();
} catch (Exception e)
{
System.out.println(e.getMessage());
}
}
}
2016年04月13日 01点04分 2
level 5
Xeon丶流光 楼主
package jkl;
public class Meal
{
//food和drink是部件
private String food;
private String drink;
public void setFood(String food){
this.food = food;
}
public void setDrink(String drink){
this.drink = drink;
}
public String getFood(){
return(this.food);
}
public String getDrink(){
return(this.drink);
}
}
--------------------------------------------
package jkl;
public class KFCWaiter
{
private MealBuilder mb;
public void setMealBuilder(MealBuilder mb)
{
this.mb=mb;
}
public Meal construct()
{
mb.buildFood();
mb.buildDrink();
return mb.getMeal();
}
}
-----------------------------------------------
package jkl;
public class Client
{
public static void main(String args[])
{
//动态确定套餐种类
MealBuilder mb=(MealBuilder)XMLUtil.getBean();
//服务员是指挥者
KFCWaiter waiter=new KFCWaiter();
//服务员准备套餐
waiter.setMealBuilder(mb);
//客户获得套餐
Meal meal=waiter.construct();
System.out.println("套餐组成:");
System.out.println(meal.getFood());
System.out.println(meal.getDrink());
}
}
2016年04月20日 01点04分 4
level 5
Xeon丶流光 楼主
9.3.1单例模式之身份证号码
package danli;
public class IdentityCardNo
{
private static IdentityCardNo instance=null;
private String no;
private IdentityCardNo()
{
}
public static IdentityCardNo getInstance()
{
if(instance==null)
{
System.out.println("第一次办理身份证,分配新号码!");
instance=new IdentityCardNo();
instance.setIdentityCardNo("No400011112222");
}
else {
System.out.println("重复办理身份证,获取旧号码!");
}
return instance;
}
private void setIdentityCardNo(String no)
{
this.no=no;
}
public String getIdentityCardNo()
{
return this.no;
}
}
------------------------------------------------------------------------
package danli;
public class Client
{
public static void main(String a[])
{
IdentityCardNo no1,no2;
no1=IdentityCardNo.getInstance();
no2=IdentityCardNo.getInstance();
System.out.println("身份证号码是否一致:"+(no1==no2));
String str1,str2;
str1=no1.getIdentityCardNo();
str2=no2.getIdentityCardNo();
System.out.println("第一次号码:" + str1);
System.out.println("第二次号码:" + str2);
System.out.println("内容是否相等:" + str1.equalsIgnoreCase(str2));
System.out.println("是否是相同对象:" + (str1==str2));
}
}
2016年04月27日 00点04分 7
level 5
Xeon丶流光 楼主
9.3.2单例模式之打印池
package dayin;
public class PrintSpoolerException extends Exception
{
public PrintSpoolerException(String message)
{
super(message);
}
}
---------------------------------------------------------------------------
package dayin;
public class PrintSpoolerSingleton
{
private static PrintSpoolerSingleton instance=null;
private PrintSpoolerSingleton(){
}
public static PrintSpoolerSingleton getInstance() throws PrintSpoolerException
{
if(instance==null)
{
System.out.println("创建打印池!");
instance=new PrintSpoolerSingleton();
}
else {
throw new PrintSpoolerException("打印池正在工作中!");
}
return instance;
}
public void manageJobs()
{
System.out.println("管理打印任务!");
}
}
-----------------------------------------------------------------------
package dayin;
public class Client
{
public static void main(String a[])
{
PrintSpoolerSingleton ps1,ps2;
try
{
ps1=PrintSpoolerSingleton.getInstance();
ps1.manageJobs();
} catch (PrintSpoolerException e)
{
System.out.println(e.getMessage());
}
System.out.println("---------------------------");
try
{
ps2=PrintSpoolerSingleton.getInstance();
ps2.manageJobs();
} catch (PrintSpoolerException e)
{
System.out.println(e.getMessage());
}
}
}
2016年04月27日 01点04分 8
level 5
Xeon丶流光 楼主
10.4.2适配器模式之加密适配器
package 加密适配器;
public abstract class DataOperation
{
private String password;
public void setPassword(String password){
this.password=password;
}
public String getPassword()
{
return this.password;
}
public abstract String doEncrypt(int key,String ps);
}
========================================================
package 加密适配器;
public final class Caesar
{
public String doEncrypt(int key,String ps)
{
String es="";
for(int i=0;i<ps.length();i++)
{
char c=ps.charAt(i);
if(c>='a'&&c<='z')
{
c+=key%26;
if(c>'z')c-=26;
if(c<'a')c+=26;
}
if(c>='A'&&c<='Z')
{
c+=key%26;
if(c>'Z')c-=26;
if(c<'A')c+=26;
}
es+=c;
}
return es;
}
}
==============================================================
package 加密适配器;
public class CipherAdapter extends DataOperation
{
private Caesar cipher;
public CipherAdapter()
{
cipher=new Caesar();
}
public String doEncrypt(int key,String ps)
{
return cipher.doEncrypt(key, ps);
}
}
================================================================
package 加密适配器;
public class Client
{
public static void main(String args[])
{
DataOperation dao=new CipherAdapter();
dao.setPassword("sunnyLiu");
String ps=dao.getPassword();
String es=dao.doEncrypt(6, ps);
System.out.println("明文为:"+ps);
System.out.println("密文为:"+es);
}
}
2016年05月11日 00点05分 17
level 5
Xeon丶流光 楼主
18。3.1命令模式之电视机遥控器
package 电视机;
public class Television
{
public void open(){
System.out.println("打开电视机!");
}
public void close(){
System.out.println("关闭电视机!");
}
public void changeChannel(){
System.out.println("切换电视频道!");
}
}
------------------------------------------------------------
package 电视机;
public interface AbstractCommand
{
public void execute();
}
-----------------------------------------------------------------
package 电视机;
public class TVOpenCommand implements AbstractCommand
{
private Television tv;
public TVOpenCommand(){
tv = new Television();
}
public void execute(){
tv.open();
}
}
----------------------------------------------------------------
package 电视机;
public class TVCloseCommand implements AbstractCommand
{
private Television tv;
public TVCloseCommand(){
tv = new Television();
}
public void execute(){
tv.close();
}
}
----------------------------------------------------------------
package 电视机;
public class TVChangeCommand implements AbstractCommand
{
private Television tv;
public TVChangeCommand()
{
tv=new Television();
}
public void execute()
{
tv.changeChannel();
}
}
---------------------------------------------------------------
package 电视机;
public class Controller
{
private AbstractCommand openCommand,closeCommand,changeCommand;
public Controller(AbstractCommand openCommand, AbstractCommand closeCommand, AbstractCommand changeCommand){
this.openCommand=openCommand;
this.closeCommand=closeCommand;
this.changeCommand=changeCommand;
}
public void open(){
openCommand.execute();
}
public void change(){
changeCommand.execute();
}
public void close(){
closeCommand.execute();
}
}
----------------------------------------------------------------------
package 电视机;
public class Client
{
public static void main(String args[])
{
AbstractCommand openCommand,closeCommand,changeCommand;
openCommand = new TVOpenCommand();
closeCommand = new TVCloseCommand();
changeCommand = new TVChangeCommand();
Controller control = new Controller(openCommand, closeCommand, changeCommand);
control.open();
control.change();
control.close();
}
}
2016年06月08日 01点06分 18
1